Javascript jQuery live()方法只触发一次
我在网站上看到过类似的问题,但我找不到适合我的解决方案:( 我试图使用jQuery的live()方法在刷新页面内容后,单击分区内的链接时,在页面分区中多次触发事件 在点击“divgauche”中的链接后,内容首先加载到“divdroite”中,然后我希望在“divdroite”中单击以刷新其自己的内容任意次数 代码如下: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
$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)逃脱。你每次都在添加动态内容吗?如果你能创建一个新的方法,人们将更容易帮助解决你的问题。