2012-03-31 5 views
0

Zum Beispiel:

function masterMethod(this, action){ 
// (action); <-- But action requires $(this) to be defined. 
} 

$(".item").click(function(){ 
    function minorMethod(){ 
    alert($(this)); 
    } 
    masterMethod($(this), minorMethod) 
}); 

Wie würde ich die Aktion ausführen und $ (this) im masterMethod passieren?

Antwort

3

können Sie call[MDN] verwenden:

function masterMethod(element, action){ 
    action.call(element); 
} 

$(".item").click(function(){ 
    function minorMethod(){ 
     alert($(this)); 
    } 
    masterMethod(this, minorMethod) 
    // or directly here? 
    // minorMethod.call(this) 
}); 

Hinweis, die beiden Änderungen vorgenommen I: Statt $(this) zu masterMethod von vorbei, ich bestehen this (das DOM-Element), da im Innern minorMethod, Sie vorbei this wieder jQuery . Wenn Sie $(this) übergeben, würden Sie am Ende ein jQuery-Objekt erneut an jQuery übergeben, d. H. $($(this)), was unnötig ist.

Ich bin mir nicht sicher, ob es tatsächlich einen Fehler werfen würde, aber in jedem Fall sollten Sie Ihr Argument this nicht benennen.

+0

Wow, das ist die beste Möglichkeit, die ich hätte tun können. Danke dir so unglaublich viel. Danke danke danke. – Trip

+0

Gern geschehen :) –

Verwandte Themen