首页 文章

Jquery动态创建div以触发另一个函数

提问于
浏览
-2

lib-used: - http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js

jquery

$(document).ready(function(){
       $("#dynamic").append("<div class=id1>Dynamically created click</div>");
       $("#id1").click(function(){
        alert("triggerd func is:"+(this));
     });
});

html

<body>
    <div id="id1">Hard Coded Click</div><!-- working -->
    </br>
    <div id="dynamic"></div><!-- not working -->
</body>

4 回答

  • 2

    这些答案确实包含正确的代码(使用on),但它们没有解释为了使用click()方法触发单击侦听器,必须在绑定事件之前加载该元素 .

    因此这将工作:

    $("#dynamic").append("<div class='id1'>Dynamically created click</div>");
    $(".id1").click(function(){
        alert("triggerd func is:"+(this));
    });
    

    但这不会

    $(".id1").click(function(){
        alert("triggerd func is:"+(this));
    });
    $("#dynamic").append("<div class='id1'>Dynamically created click</div>");
    

    所以基本上如果你使用 .on('click', '.id1', ....) 它会以任何一种方式开火 .

    同样,为了让所有内容都在同一个答案中,您的选择器基于ID属性而不是您正在使用的类名 .

  • 1

    您的点击事件不起作用..您的点击事件选择id为id1的所有元素,因此动态添加的元素具有类而不是id ..所以事件不起作用...

    一种做法是

    your selector should be class selector...not id ...在委托事件上使用动态添加的元素以使该事件起作用 .

    $("#dynamic").on('click','.id1',function(){
                    alert("triggerd func is:"+(this));
    
    
      });
    

    注意:id应始终是唯一的,并且要使硬编码的div工作,您应该将id设置为class

    <div class="id1">Hard Coded Click</div><!-- working -->
       //--^^^^^----here
    
  • 0

    使用on而不是click.Code将是这样的

    $(document).on('click','.id1',function(){
            alert("triggerd func is:"+(this));
    });
    

    我希望它会有所帮助

  • 1

    您将click事件绑定到Id = id1的元素 . 如果单击具有不同Id的元素,则不会触发它 .

    将类添加到两个div并将click事件选择器调整到该类,即 .

    $("body").on("click", ".divsClass", function(){
                alert("triggerd func is:"+(this));
    });
    

相关问题