Javascript JQuery不确定从ajax打印的div类
我使用smarty引擎在html页面中打印html元素,然后从jquery打印 从smarty打印的html是Javascript JQuery不确定从ajax打印的div类,javascript,jquery,smarty,smarty3,Javascript,Jquery,Smarty,Smarty3,我使用smarty引擎在html页面中打印html元素,然后从jquery打印 从smarty打印的html是 <div id="broadcastsXXX" class="broadcast orginal-broadcast highlightedbroadcast"> <i class="dogears"></i> <div class="content"> ... ... </div> </d
<div id="broadcastsXXX" class="broadcast orginal-broadcast highlightedbroadcast">
<i class="dogears"></i>
<div class="content">
...
...
</div>
</div>
函数正在更改单击的div父级并删除highlightedbroadcast类
当用户单击从smarty模板打印的.content div(当页面不可用时)时,可以毫无问题地删除highlightedbroadcast css类。但是,如果用户单击从ajax打印的div.content,则不会删除该类,也不会执行任何操作
我尝试向函数中添加alert('hi'),当用户单击来自smarty的.content div时,函数也会显示hi,当用户单击从ajax打印的div时,函数会显示do noting
请注意,broadcastsXXX与broadcasts123 broadcasts124一样是动态的。。等
这是一个真实的例子
有什么解决方案吗?.click()只会将事件处理程序添加到当前DOM中
如果希望jQuery事件也应用于随后通过AJAX加载的任何HTML,则需要使用而不是.click():
或者,您需要在每次AJAX调用后将单击事件添加到通过AJAX加载的HTML中。我认为您应该使用“live”,而不仅仅是“bind”或“click”。当文档准备就绪时,根本不会呈现div.content(它们是通过ajax响应呈现的)。所以把你的代码改成
$(document).ready(function() {
$('.content').live('click',function() {
$(this).parent().removeClass("highlightedbroadcast");
var broadcastid = ($(this).parent().attr("id"));
});
});
可能有用。在这里,小提琴或其他演示对理解此问题非常有帮助。这是一个真实的示例
。live()
在jQuery 1.7中被弃用,在1.9中被删除。您应该推荐.on()
。您仍在使用。单击()。我试图为您修复它,但您在下一次编辑时将其解开。
$(document).ready(function() {
$('body').on('click', '.content', function() {
$(this).parent().removeClass("highlightedbroadcast");
var broadcastid = ($(this).parent().attr("id"));
});
});
$(document).ready(function() {
$('.content').live('click',function() {
$(this).parent().removeClass("highlightedbroadcast");
var broadcastid = ($(this).parent().attr("id"));
});
});