附加元素问题
Append element problem
我正在创建一些元素并追加它,它的工作很好,但当我想调用任何函数或想调用任何不工作的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处理程序。
相关文章:
- Small Javascript从动态表单中删除多个元素的问题
- 使用javascript删除元素时出现的问题
- 获取要引发的fadeIn元素时出现问题
- 使用AngularJS UI路由器时出现元素绑定问题
- 访问带有变量的Object元素时出现问题
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- 在方形空间 (YUI) 上重绘元素时出现问题
- 替换
元素中的特殊字符的问题
- 在自定义元素中扩展 HTMLCanvasElement 问题
- 在具有CONTENT标记的自定义元素中使用SELECT标记时出现问题
- 性能问题:存储对DOM元素的引用与使用选择器相比
- OnMouseMove on body标记导致子下拉元素出现问题
- Javascript连接元素,出现问题
- 包含方法和突出显示元素的问题
- 单击元素时出现问题,这些元素是用.html()添加到页面的
- 将元素推送到嵌套数组的问题
- firefox中的浮动元素问题
- 这种计算画布元素中非白色像素的方法有什么问题
- Scriptaculous排序表和句柄的问题(元素排序不正确)
- 问题元素相同的类