【问题标题】:JQuery access dynamically created objectsJQuery 访问动态创建的对象
【发布时间】:2009-10-05 11:25:45
【问题描述】:

如何访问动态生成的对象(div)。 我的意思是 $(document).ready(function() 启动时输出中不存在的 DIVS。

如果我这样做:

$('#click_me').click(function() {
    $('#container').append('<div id="clicker2">can you click on me?</div>');
});

$('#clicker2').click(function() {
    alert('hurray, it works');
});

clicker2 不起作用

我该如何解决? 我打算动态创建多个。我也想将 Jquery 操作分配给他们。

【问题讨论】:

    标签: jquery click


    【解决方案1】:

    .click() 函数不适用于稍后添加的 span 或 div,您需要使用 .live()

    $("#clicker2").live("click", function(){
      # do stuff to spans currently existing
      # and those that will exist in the future
    });
    

    【讨论】:

    • 好吧,我的行为也被重复了!!!! :( 当我执行 APPEND 然后为其分配操作时。下次我执行附加操作并在启动操作时执行操作.. 它运行两次
    【解决方案2】:

    在追加之前显式创建 div 并组装其属性和事件。

    var $div = $('<div />').append('can you click on me?').attr('id', 'clicker2').click(function() {
    alert('hurray, it works');
    });
    $('#container').append($div);
    

    【讨论】:

      【解决方案3】:

      只需将点击绑定放在第一次点击函数中即可:

      $('#click_me').click(function() 
      {
          $('#container').append('<div id="clicker2">can you click on me?</div>');
          $('#clicker2').click(function(){  alert('hurray, it works');   });
      });
      

      正如你所拥有的,绑定正在被调用,但没有“div#clicker2”可以绑定到第二个函数。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 1970-01-01
        • 2015-09-24
        • 1970-01-01
        • 2018-07-14
        相关资源
        最近更新 更多