【问题标题】:Append element problem追加元素问题
【发布时间】:2011-11-10 13:14:58
【问题描述】:

我正在创建一些元素并附加它,它工作正常,但是当我想调用任何函数或想调用任何不起作用的 jquery 时,但是当我直接放置这些元素而不是附加时,它可以正常工作。总而言之,附加元素不会调用任何函数或任何东西。

查询代码:

var cart_content = jQuery($.create('li', {}, [])).append($.create('span',{}, [av_title]),$.create('img', {"src ":"images/delete_icon.png", "class":"cart_content", "alt":"delete", "title":"Delete"}, [])); $(".advertise_cart").append(cart_content); $(".cart_content").click(function(){ alert("Hello"); });
<ul class="advertise_cart" id="advertise_cart_id">
   <li>
        <span>Inner Content 1</span>
        <img src="images/delete_icon.png" class="cart_content" alt="delete" title="Delete">    <!------ On clicking on this will show alert box, but on clicking on appended element will not call alert box or anything ----->
    </li>
</ul>

提前致谢

【问题讨论】:

  • live() 和 delegate() 最好,如果它对你有用,你为什么不能接受它作为答案。

标签: javascript jquery


【解决方案1】:

您遇到的问题是绑定事件时元素不存在于 DOM 中的结果。要解决此问题,您可以使用delegate()live()

$('body').delegate('.cart_content','click',
    function(){
        alert('hello');
    });

JS Fiddle demo.

参考资料:

【讨论】:

  • 不客气! =)(请考虑投票或接受您认为有助于解决问题的答案)。
【解决方案2】:

不要使用 .click 功能。

使用 live 函数,它适用于 DOM 中新添加的元素

像这样:

$(".cart_content").live(function(){    alert("Hello"); });

【讨论】:

  • 感谢您的回复,但您能告诉我我应该如何在此使用点击事件。
  • $(".cart_content").live('click',function(){ alert("Hello"); }); api.jquery.com/live
【解决方案3】:

使用live 函数来处理您的事件可能会有所帮助。

【讨论】:

    【解决方案4】:

    我唯一要补充的是,live 函数意味着处理程序将在将来的任何时候继续应用于与选择器匹配的内容(直到并且除非您调用 unbind)。这可能就是你想要的。如果不是,您可以编写可能会在短暂延迟(例如 1.5 秒)后添加点击处理程序。或者更确定一点,您可以编写代码,每 100 毫秒检查 .cart_content 是否存在,直到找到它,然后添加点击处理程序。所以这种方法只会添加一次点击处理程序。如果后来添加了另一个 .cart_content,则不会自动添加点击处理程序。

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 2012-03-05
      • 1970-01-01
      • 2014-01-13
      • 2020-09-11
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多