Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery不确定从ajax打印的div类_Javascript_Jquery_Smarty_Smarty3 - Fatal编程技术网

Javascript JQuery不确定从ajax打印的div类

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

我使用smarty引擎在html页面中打印html元素,然后从jquery打印

从smarty打印的html是

<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"));
  });   
});