事件只运行一次
问题描述:
我有一个脚本,当它被点击时,它会运行一个带有ajax请求的函数。事件只运行一次
jQuery('.go').on('click', function(){
id = "";
id = $(this).parent().parent().find("input").val();
request_event("go",id);
});
jQuery('.noGo').on('click', function(){
id = "";
id = $(this).parent().parent().find("input").val();
request_event("noGo",id);
});
运行ajax后,div中的值(即包含span值的div)被更改。
switch(operation){
case "go":
jQuery('.eventBox input[value="'+id+'"]').parent().find("#confirmBox").html("<span class='noGo cursorIcon'>Não Confirmar</span>");
break;
case "noGo":
jQuery('.eventBox input[value="'+id+'"]').parent().find("#confirmBox").html("<span class='go cursorIcon'>Confirmar</span>");
break;
}
问题是,在所有新的“链接”中,点击事件没有被触发。
任何人都可以在地狱吗?
答
对于所有的新链接上使用.on()
,你需要这样做:
jQuery(document).one('click', '.go', function() {
id = "";
id = $(this).parent().parent().find("input").val();
request_event("go", id);
});
答
好像得到“on”事件寄存器的动态元素,其实现需要有点不同,像这样
$(document).on("click",".go",function(){
alert("hello");
$('#divTest').append("<span class='go'>dynamic span</span>");
});
在此处查看此信息fiddle
这个工作,但你再次点击,事件运行两次。 – macieira 2013-05-02 08:49:29
您希望点击事件只运行一次吗? – 2013-05-02 08:53:15
是的。每次点击一次。例如:现在您单击1次 - 运行1个Ajax请求。第二次点击 - 使用相同的值运行2 ajax请求。第三次点击 - 使用相同的值运行3个Ajax请求并继续... – macieira 2013-05-02 08:54:40