2013-04-26 89 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

相关问题