2009-09-25 25 views
20

Estoy tratando de escribir un código genérico¿Cómo pasar un objeto jquery a la función?

var rodd = $('#checkBox'); 

quiero pasar rodd a una función y comprobar si se comprueba

Callme(rodd); 

$(rodd).click(function() { 
Callme(this); 
}); 

function Callme(rodd){ 
if(this.checked){ 
// do some behavior 
} 
} 

Respuesta

15

Si rodd es un objeto jQuery:

function Callme(rodd) { 
    if (rodd.is(":checked")) { 
    // ... 
    } 
} 

o:

function Callme(rodd) { 
    if (rodd[0].checked) { 
    // ... 
    } 
} 
1

En cuanto a su código, su fallecimiento en un objeto jQuery, rodd, en una función para devolver un objeto jQuery $(rodd).click...

Podría ser más fácil hacer

$('#checkBox').click(Callme); 

function Callme(rodd){ 

    if(this.checked){ 
    // do some behavior 
    } 

} 

o

$('#checkBox').click(Callme); 

function Callme(rodd){ 

    if($(this).is(':checked')){ 
    // do some behavior 
    } 

} 

esto también elimina el controlador de eventos de funciones anónimas que solo está ejecutando Callme() pasando el destino del evento. Working Demo aquí.

EDIT:

Actualmente, Callme(rodd) arriba espera una HTMLElement object a ser aprobada en Si usted quiere ser capaz de pasar en un objeto jQuery, basta con cambiar a este

$('#checkBox').click(function(event) { 

Callme($(event.target)); 

}); 

function Callme(rodd){ 

    if(rodd.is(':checked')){ 
    alert('checked'); 
    } 

} 

aunque personalmente. , Lo mantendría como un elemento que se pasaría y realizaría el ajuste en la función Callme. Es posible que desee considerar prefijar el parámetro rodd con $ para que sea obvio que se espera un objeto jQuery.

5

Esto debería funcionar:

//Assuming rodd is a jquery element 
Callme(rodd); 

rodd.click(function() { 
    Callme($(this)); 
}); 

function Callme(rodd){ 
    if(this.is(":checked"){ 
    // do some behavior 
    } 
} 

recordar que el detector de eventos tiene esta apuntando en el elemento DOM, no el elemento jQuery. Por lo tanto, necesita convertir esto en un elemento jquery, usando la expresión $ (this).

+0

Su segunda opción me condujo en la dirección correcta. Estaba intentando 'this.css (" cursor "," puntero ");' pero necesitaba envolver 'this' en un selector jQuery primero,' $ (this) .css ("css", "puntero"); '. – GibralterTop

Cuestiones relacionadas