2009-09-25 15 views
20

Próbuję napisać rodzajowy kodJak przekazać obiekt jquery do funkcji?

var rodd = $('#checkBox'); 

Chcę przekazać Rodd do funkcji i sprawdzić, czy jest zaznaczone

Callme(rodd); 

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

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

Odpowiedz

15

Jeśli rodd jest obiektem jQuery:

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

lub:

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

Patrząc na kod, twój mijania w obiekcie jQuery, rodd, do funkcji, aby powrócić obiektu jQuery $(rodd).click...

To może być łatwiejsze do zrobienia

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

function Callme(rodd){ 

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

} 

lub

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

function Callme(rodd){ 

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

} 

to również eliminuje funkcję obsługi zdarzeń anonimowych, która wykonuje tylko Callme() przekazując w celu zdarzenia. tutaj.

EDIT:

Obecnie Callme(rodd) powyżej oczekuje HTMLElement object być przekazywane w Jeśli chcesz być w stanie przejść w obiekcie jQuery, wystarczy zmienić do tego

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

Callme($(event.target)); 

}); 

function Callme(rodd){ 

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

} 

chociaż osobiście. , Chciałbym zachować go jako element, który ma być przekazany i wykonać owijanie w funkcji Callme. możesz rozważyć dodanie prefiksu parametru rodd za pomocą $, aby było oczywiste, że oczekiwany jest obiekt jQuery.

5

To powinno działać:

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

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

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

pamiętać, że słuchacz zdarzenie ma ten wskazując na elemencie DOM, a nie elementu jQuery. Dlatego musisz przekonwertować to na element jquery, używając wyrażenia $ (this).

+0

Twoja druga opcja skierowała mnie we właściwym kierunku. Próbowałem 'this.css (" kursor "," wskaźnik ");' ale potrzebne do zawijania 'this' w selektor jQuery najpierw,' $ (this) .css ("css", "pointer"); '. – GibralterTop

Powiązane problemy