2009-09-25 5 views
20

Ich versuche, eine generische CodeWie übergebe ich ein jquery-Objekt?

var rodd = $('#checkBox'); 

I rodd an eine Funktion übergeben möchten, zu schreiben und überprüfen, ob es

Callme(rodd); 

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

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

Antwort

15

geprüft Wenn rodd ein Objekt jQuery ist:

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

oder:

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

Blick auf den Code, Ihre Weitergabe in einem jQuery-Objekt, rodd, in eine Funktion ein jQuery-Objekt zurück $(rodd).click...

Es könnte einfacher sein,

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

function Callme(rodd){ 

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

} 

oder

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

function Callme(rodd){ 

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

} 
zu tun

dies beseitigt auch die anonyme Funktion Event-Handler, die nur Callme() Übergabe des Ereignisziels ausführt. Working Demo hier.

EDIT:

Derzeit erwartet Callme(rodd) über ein HTMLElement object in weitergegeben werden, wenn Sie in einem jQuery-Objekt übergeben können, füllen Sie einfach auf diesen obwohl persönlich

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

Callme($(event.target)); 

}); 

function Callme(rodd){ 

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

} 

ändern. Ich würde es als ein Element beibehalten, das übergeben wird und die Umhüllung in der Callme Funktion tut. Vielleicht möchten Sie den rodd-Parameter mit $ voranstellen, um deutlich zu machen, dass ein jQuery-Objekt erwartet wird.

5

sollte diese Arbeit:

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

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

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

daran erinnern, dass die Ereignis-Listener dies zeigt auf dem DOM-Element hat, nicht das jquery Element. Daher müssen Sie dies in ein jquery-Element konvertieren, indem Sie den Ausdruck $ (this) verwenden.

+0

Ihre zweite Option steuerte mich in die richtige Richtung. Ich habe 'this.css ("cursor", "pointer") versucht; 'aber musste' this' zuerst in einen jQuery-Selektor packen, '$ (this) .css (" css "," pointer ");'. – GibralterTop

Verwandte Themen