使用.append()添加的HTML不会触发事件
HTML added with .append() is not triggering events
我有一些jQuery从PHP脚本中附加HTML。
jQuery
$.ajax({
type: "POST",
url: "newPage.php",
data: data,
cache: false,
success: function(html)
{
$('.item1 ul').append(html);
}
});
PHP
echo"<li><a href='"#'">".$pages["title"]."<img src='"images/delete.jpeg'" class='"delete del-page'" id=".$pages["pages_id"]." title='"Delete Page'"/><img src=".$state." class='"page-state'" id=".$pages["pages_id"]." title='"Page On'"/></a></li>";
在追加之后,没有任何jQuery事件对新HTML起作用。
您需要使用.on()
委派您的事件
您可以在此处专门阅读
但基本上,您需要将侦听器连接到DOM继承结构中更高的位置。
所以与其这样。。。
$('.selector').on('event', function(e) {...});
做这个
$('.item1 ul').on('event', '.selector', function(e) {...});
为什么
这是因为当您绑定事件时,页面上尚未出现的动态元素仍然会激发事件,它们只是没有处理程序。
由于事件冒泡,树上的所有DOM元素都将听到其子代的事件(除非传播已停止),并可以相应地对其进行操作。
在本例中,当'.item1 ul'
听说某个子元素触发了'event'
时,如果是'.selector'
触发了它,则处理程序将启动。
您可能正在将事件绑定到元素:
$('button').click(function() {
...
});
只有当$('button')
选择器返回所需的元素时,此操作才有效。您的问题是选择器被调用一次。它不会更新以考虑在调用选择器后创建的元素。
您应该使用事件委派语法将事件绑定到已经存在的父元素:
$('#parent').on('click', 'button', function() {
...
});
这样,当#parent
接收到click
事件时,它将查找与button
匹配的元素,并将事件传递给它们。
相关文章:
- 如何使Javascript动态html表及其上的事件
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在HTML列表中添加事件's子弹
- Html按钮点击事件未触发单选按钮
- 如何在tinymce编辑器中将点击事件绑定到html标签
- RouteChangeStart事件在初始index.html页面加载时触发
- 侦听HTML呈现过程事件
- 枚举附加到文档的HTML对象的所有事件
- 当select标记触发onChange事件时,从mysql数据库加载html表
- 我需要java代码来打开html代码onclick事件
- 重叠对象上的HTML画布事件
- 如何将事件绑定到从AJAX请求注入的HTML
- AngularJS$apply有时不会;当在highchart中使用click事件时,t触发更新{{}}中html标记中
- HTML输入框未触发事件
- Google图表HTML工具提示,其中包含javascript onclick事件
- javascript在附加的html中点击事件订阅
- 如何在没有POST/GET/FORM的情况下在onclick事件HTML中设置PHP会话
- 从按钮触发onchange事件html输入文件
- 处理多个滑动事件HTML &Javascript / jQuery
- 可以在Javascript的onclick事件(HTML)中使用正则表达式