Javascript 在所有元素上应用jquery代码

Javascript 在所有元素上应用jquery代码,javascript,jquery,ajax,click,Javascript,Jquery,Ajax,Click,如何将jquery函数应用于使用ajax加载的元素 <span class="h">Test</span><br /><br /> <span class="h">Test</span><br /><br /> <span class="h">Test</span><br /><br /> .... <span class="h">Test&

如何将jquery函数应用于使用ajax加载的元素

<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
....
<span class="h">Test</span><br /><br />
<script type="text/javascript">
    $(document).ready(function() {
    $('.h').click(function() {
        alert("test");
    });
});
</script>
测试

测试

测试

.... 测试

$(文档).ready(函数(){ $('.h')。单击(函数(){ 警报(“测试”); }); });
所以,这是完美的。每次单击span元素都会返回警报。 但在这里,单击功能不适用于使用ajax加载的元素:

<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
<span class="h">Test</span><br /><br />
....
<span class="h">Test</span><br /><br />
<script type="text/javascript">

    $(window).scroll(function(){
    if  ($(window).scrollTop() == $(document).height() - $(window).height()) {
        $('body').append('<span class="h">Test3</span><br /><br />');
    }
    });

    $(document).ready(function() {
    $('.h').click(function() {
        alert("test");
    });
});
</script>
测试

测试

测试

.... 测试

$(窗口)。滚动(函数(){ if($(窗口).scrollTop()==$(文档).height()-$(窗口).height()){ $('body').append('Test3

'); } }); $(文档).ready(函数(){ $('.h')。单击(函数(){ 警报(“测试”); }); });
我如何解决这个问题?

jQuery是您想要的:

$('.h').live('click', function () {
  // Do something!
}
click()
函数只向调用它时出现的元素添加侦听器。您需要在以后添加的任何元素上再次调用它


或者,如@jerluc所述,使用
live()
函数。

您必须使用live而不是click,以便事件也绑定到新附加的项:

$('.h').live('click', function() {
    alert("test");
});

您需要
live
函数将事件绑定到动态创建的元素:

$('.h').live('click', function() {
    alert("test");
});

你不是在重复这种行为。您需要使用jQuery的方法不断检查DOM中的新元素


因为当时我在回答中没有提到live函数。所以这实际上是合理的。你的回答仍然有效
live()
是最简单的方法,但是还有其他(更快的)方法可以获得相同的结果。我认为人们应该在投票时留下评论:)谢谢!我如何在这样的函数上使用它:$('#element').externscript({…});您可以将其放入您的
$(文档).ready(…)
代替原来的代码,并将所需的点击事件代码放在注释
//做点什么以上警报工作正常。但现在我想将其应用于名为qtip->的jquery扩展,因此,我尝试了:$(document).ready(function(){$('#element').live('mouseover',function(){$(this.qtip();});});但是它不起作用。我的浏览器总是崩溃。你需要对特定的插件做一些更深入的研究。参考他们的API方法:我看不出你的观点。。该插件适用于jquery的ajax函数未添加的所有元素。那么问题出在哪里呢?
     $(document).ready(function() {
         $('.h').live('click', function() {
            alert("test");
         });
     });