附加元素问题

Append element problem

本文关键字:问题 元素      更新时间:2023-09-26

我正在创建一些元素并追加它,它的工作很好,但当我想调用任何函数或想调用任何不工作的jquery,但当我把这些元素直接而不是追加,然后它工作正常。总而言之,附加元素不调用任何函数或任何东西。

JQUERY代码:

<>之前var cart_content = jQuery($。Create ('li', {}, [])).append($。创建({}"跨越",[av_title]),美元。创建(img, {" src ":"图像/delete_icon.png"、"类":"cart_content"、"alt":"删除","标题":"delete"},[]));$ (" .advertise_cart ") .append (cart_content);$ (" .cart_content ") .click(函数(){警报("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>

Thanks in advance

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

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

JS Fiddle demo.

引用:

  • live() .
  • delegate() .

不要使用。click功能。

如果DOM中新添加的元素可以使用live函数

像这样:

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

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

我要添加的唯一一件事是,活动函数意味着处理程序将继续应用于与选择器匹配的内容在未来的任何时候(直到和除非您调用unbind)。这可能就是你想要的。如果不是,您可以编写可以在短暂延迟(比如1.5秒)后添加click处理程序的语句。或者更确定一点,您可以编写代码,每100毫秒检查一次.cart_content是否存在,直到找到为止,然后添加click处理程序。因此这种方法只会添加一次click处理程序。如果由于某些原因导致以后添加了另一个.cart_content,则不会自动添加click处理程序。