2012-10-12 37 views
2

讓我們假設我有以下功能的元件...獲得從被調用的元素的事件裏面

jQuery('#a').click(function(){ 
    myFunction(); 
}); 
function myFunction(){ 
    var me = jQuery(this);// this one gets the "window" object instead of "#a" element 
} 

我怎樣才能啓動該事件從myFuncton而我着的目標元素發送this作爲參數,因爲它要海岸我回去,重新檢查整個網站,並改變每個函數調用的參數...

+0

你爲什麼不能發這個? jscript不是強類型的。所以你只能在需要它的地方使用它。您可以在每次使用 – eloycm

回答

4

所以,你可能只是這樣做:

$('#a').click(myFunction); // then this in myFunction will be the '#a' element. 

更新

如果你需要做其他事情等回調再myFunction的,那麼你可以嘗試.call().apply()與給定這個值執行功能。

$('#a').click(function() { 
    otherLogic(); 
    myFunction.call(this); 
}); 
+1

+1都擊敗我之前檢查未定義的值。 – Fenton

+0

沒有先生,我很抱歉,但這個小演示dosent顯示整個圖像...點擊事件做了很多邏輯其中之一是調用'myFunction'功能... – Hilmi

+0

@ user1225246看到我的更新。 – xdazz

1

試試這個

jQuery('#a').click(function(){ 
    myFunction(this); 
}); 

function myFunction(elem){ 
    var me = jQuery(elem); 
} 

您將獲得當前的對象,你在點擊事件通過它調用的ELEM功能

+0

先生在我的文章中,我寫道我不能這樣做,因爲它會阻止我回去並更改整個網站,在那裏調用'myFunction' ...無論如何感謝您的提問 – Hilmi

+0

重要的是您不必更改您的網站.... – eloycm

0
jQuery('#a').click(function(){ 
    myFunction(this); 
}); 
function myFunction(sender){ 
    if (sender !=undefined) 
    { 
     var me = jQuery(sender);// and do other stuff 
     //..... 
    } 
    //do your old stuff -- me will be logically out of scope 
} 
//this will not result in an error, sender will be undefined 
// the code will be compatible backwards 
myfunction(); 
相關問題