事件只运行一次

时间:2013-05-02 08:41:00

标签: jquery html javascript-events

我有一个脚本,当点击它时,它运行一个带有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&atilde;o Confirmar</span>");

break;
case "noGo":
    jQuery('.eventBox input[value="'+id+'"]').parent().find("#confirmBox").html("<span class='go cursorIcon'>Confirmar</span>");


break;
  }

问题在于,在所有新的“链接”中,不会触发点击事件。

任何人都可以惹我生气?

3 个答案:

答案 0 :(得分:3)

对最近的静态元素使用.on()或对新创建的元素使用这样的文档

jQuery(document).on('click','.go', function(){

答案 1 :(得分:1)

对于所有新链接,您需要这样做:

jQuery(document).one('click', '.go', function () {
    id = "";
    id = $(this).parent().parent().find("input").val();
    request_event("go", id);
});

答案 2 :(得分:0)

似乎想要获得动态元素的“on”事件寄存器,实现需要有点像这样

$(document).on("click",".go",function(){
    alert("hello");
    $('#divTest').append("<span class='go'>dynamic span</span>");
});

在此fiddle

中查看此内容