Javascript jQuery live()方法只触发一次

Javascript jQuery live()方法只触发一次,javascript,jquery,html,Javascript,Jquery,Html,我在网站上看到过类似的问题,但我找不到适合我的解决方案:( 我试图使用jQuery的live()方法在刷新页面内容后,单击分区内的链接时,在页面分区中多次触发事件 在点击“divgauche”中的链接后,内容首先加载到“divdroite”中,然后我希望在“divdroite”中单击以刷新其自己的内容任意次数 代码如下: $j("body").on('click', "#divgauche a", function (event1) { $j("#divdroite").load((th

我在网站上看到过类似的问题,但我找不到适合我的解决方案:(

我试图使用jQuery的live()方法在刷新页面内容后,单击分区内的链接时,在页面分区中多次触发事件

在点击“divgauche”中的链接后,内容首先加载到“divdroite”中,然后我希望在“divdroite”中单击以刷新其自己的内容任意次数

代码如下:

$j("body").on('click', "#divgauche a", function (event1) {
    $j("#divdroite").load((this.href + " #courscontainer"), function () {
        $j('#divdroite .collapsible').on('click', function (g) {
            $j('>*:has(*)', g.target).slideToggle(300);
            g.preventDefault();
            g.stopPropagation();
        });
    });
    event1.preventDefault();
    event1.stopPropagation();
});

$j("#divdroite a").live('click', function (event2) {
    $j("#divdroite").load((this.href + " #courscontainer"), function () {
        $j('#divdroite .collapsible').on('click', function (h) {
            $j('>*:has(*)', h.target).slideToggle(300);
            h.preventDefault();
            h.stopPropagation();
        });
    });
    event2.preventDefault();
    event2.stopPropagation();
});
任何帮助都将不胜感激


谢谢!!

尝试在.load事件上添加.complete回调,以将click事件应用于刚刚加载的元素

$j("#divdroite").load((this.href + " #courscontainer"), function ()
    {
       $j('#divdroite .collapsible').on('click',function(h)
       {
       $j('>*:has(*)',h.target).slideToggle(300);
         h.preventDefault();
         h.stopPropagation(); 
       });
    }); 
event2.preventDefault(); 
event2.stopPropagation(); 
})
.complete(function(){
 // add code your click event code here that will apply to the loaded div
$("#coursecontainer").on('click',someFunction);

});

然而,很难确切地看到发生了什么

与委派单击
a
元素的方式相同,您还应该能够委派单击
可折叠的
元素

使用
.on(eventType,selector,fn)
语法(两次),代码应该如下所示:

$j("#divdroite").on('click', "a", function (e) {
    e.preventDefault();
    e.stopPropagation();
    $j("#divdroite").load((this.href + " #courscontainer"));
}).on('click', '.collapsible', function (e) {
    e.preventDefault();
    e.stopPropagation();
    $j('>*:has(*)', e.target).slideToggle(300);
});

唯一的假设是
#divdroite
是一个静态元素,不会被删除/替换(由其他javascript片段)。如果它仍然不起作用,那么我猜这就是正在发生的事情。

只是一个想法。您使用的jQuery版本是什么?
.live()
早就被弃用了。您可以使用.on()?它可以处理动态元素。与.on()@Taruckus
.live()相同的问题
也有同样的用途,但它早就被弃用了。这有帮助吗?我有一个类似的问题。您好。谢谢,这会起作用,但同样的问题再次发生>>它会工作一次,然后停止工作。我可以将函数本身用作回调函数,每次排队时它都会工作一次,但它看起来不是很好nd使代码无法阅读。我确信一定有更干净的方法来做这件事?啊,好的,是的,对不起,我一定是误解了这个问题。你可能可以通过回调中的。on('change',someFunction)逃脱。你每次都在添加动态内容吗?如果你能创建一个新的方法,人们将更容易帮助解决你的问题。