所以我有这两段代码。
$(".hideMessage").live("click", function(event) {
$('.messageSuccess').hide("slow");
return false;
});
和
setTimeout(function(){
$(".messageSuccess").hide("slow")
}, 10000);
基本上,当点击.messageSuccess
时,第一个段会隐藏.hideMessage
,并使用live()
,因此如果我之后通过AJAX生成了.messageSuccess
,我仍然可以访问它们。
如果用户未在10秒范围内点击.messageSuccess
链接,则第二个段会隐藏.hideMessage
。问题是,如何在第二段中使用live()
,以便我可以控制生成的AJAX .messageSuccess
?
答案 0 :(得分:0)
每当添加新的.messageSuccess
元素时,您需要知道在创建时设置超时。最好的选择是修改脚本以在添加新元素时设置超时。但是,如果您无法执行此操作(例如,您无法控制的第三方脚本),则需要设置轮询间隔以检查新元素是否存在。
例如:
setInterval(function(){
$('div.messageSuccess').each(function(){
var $this = $(this);
if ($this.data('hideScheduled'))
return;
$this.data('hideScheduled', true);
setTimeout(function(toHide){ toHide.hide('slow'); }, 10000, $this);
});
}, 2000);
此脚本将在它们出现后10-12秒自动隐藏任何新的div.messageSuccess
元素。
答案 1 :(得分:0)
您不需要,因为$(".messageSuccess")
会选择DOM中当前所有.messageSuccess
元素,无论它们是否是由AJAX添加的。
如果你使用的是jQuery 1.7+更新.live
到.on
,那就不相关了。