2013-04-26 36 views
1

函數名稱從jQuery的網站:jQuery的在()事件處理程序參數與參數

.on(events [, selector ] [, data ], handler(eventObject)) 

我怎麼能寫正確的代碼從ON方法的參數傳遞給事件處理函數...

我想這樣的代碼:

myfunc =function(obj){ 
$(this).after("<p>Another paragraph! "+obj+"</p>"); 
} 

var count = 0; 
$("body").on("click", "p",myfunc(++count)); 

enter image description here

回答

3

假定你打算遞增的每次點擊計數:

var count = 0; 
$("body").on("click", "p",function(){ 
    $(this).after("<p>Another paragraph! " + (++count) + "</p>"); 
}); 

編輯,如果你希望你的功能是分開的,不想去改變它,你可以這樣做:

myfunc = function(obj){ 
    $(this).after("<p>Another paragraph! "+obj+"</p>"); 
} 

var count = 0; 
$("body").on("click", "p",function(){ 
    myfunc.call(this, ++count); 
}); 

http://jsfiddle.net/Bwk3W/

+0

這不等於他試過的代碼,你的代碼不會保存'count'的值,它可以在事件發生之前更改。 – gdoron 2013-04-26 14:27:06

+1

@gdoron這就是答案中的第二位。雖然再次看到它,但我認爲我們的答案都是錯誤的。我相信他希望在每次點擊時增加計數,而不是緩存值。 – 2013-04-26 14:29:02

+0

+1,以及它接縫,他想要你的答案,我會給我的答案生活,因爲它更好地回答問題文本... – gdoron 2013-04-26 14:31:39

4
myfunc =function(event){ 
    $(this).after("<p>Another paragraph! "+event.data+"</p>"); 
} 

$("body").on("click", "p", ++count, myfunc); 

您發送的數據被插入到事件對象:

數據

數據傳遞到處理程序event.data當觸發事件。

docs

+1

不工作? http://tinker.io/411e7 – Nelson 2013-04-26 14:27:00

+0

@Nelson,它工作得很好,這就是你如何傳遞值,如果你想要改變值,你需要使用不同的方法,然後OP問。 – gdoron 2013-04-26 14:29:38

+0

好吧,我當時不明白這個問題..抱歉的噪音。 – Nelson 2013-04-26 14:32:25

相關問題