2009-06-30 7 views
0

Ich habe eine js-Funktion, die bisher immer der Rückruf für ein Click-Ereignis war, und daher stark auf der 'dieser' Pseudovariable beruht. "Dies" ist ein <li> Element.So setzen Sie Callback auf einzelne Elemente mit jQuery

Allerdings habe ich jetzt einen Umstand, wo es manchmal ausgelöst wird, mehr gewundene Route zu verwenden, und unter diesen Umständen ist "das" ein ganz anderes Element. Vor dem Aufruf der Funktion kann ich jedoch den entsprechenden <li> finden, aber gibt es einen Weg, wie ich das als 'das' einspeisen kann? Ich dachte an die Verwendung von .Each() auf der <li>, aber es wird nicht auf ein einzelnes Element funktionieren.

bearbeiten es stellt sich heraus, dass jedes() funktioniert auf einzelne Elemente .. der Fehler stellte sich heraus, etwas anderes zu sein.

Lassen Sie sich diese Frage allerdings nicht gelöscht werden, wie es für andere nützlich sein könnte

Antwort

2

Sie sind für die call Methode suchen:

function onClick() { 
    console.log(this); // will be the #test element in both cases 
    return false; 
} 

$('#test').click(onClick); 

$('#test2').click(function() { 
    onClick.call($('#test')[0]); 
    return false; 
}); 

Obwohl dies mit apply auch möglich ist:

onClick.apply($('#test')[0]); 

Die [0] ist erforderlich, um das tatsächliche DOM-Element anstelle des umbrochenen jQuery-Satzes zu übergeben.