我在网站上看到类似的问题,但我找不到适用于我的修复:(
我正在尝试使用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();
});
任何帮助都会受到高度赞赏。
谢谢!
答案 0 :(得分:0)
尝试在.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);
});
答案 1 :(得分:0)
很难确切地知道发生了什么,但是......
与您委派a
元素的点击次数相同,您还应该能够委派对.collapsible
元素的点击次数。
使用.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)。如果它仍然不起作用,那么我猜测那是怎么回事。