我有一个非常简单的滚动使用jQuery创建,它看起来如下..。
jQuery(document).ready(function() {
jQuery(".tooltip").hover(function(){
jQuery('.tooltip_message').fadeToggle();
});
});
当最初加载页面时,它工作得很好。但是,当由于某种原因提交ajax表单时,滚转不再起作用。
我没有一个活生生的例子,因为该网站在我的本地服务器上,但你认为这可能与我用文档准备好初始化它的方式有关吗?
发布于 2015-02-21 11:04:00
当元素出现在文档中时,document.ready将绑定该函数。它不会为动态添加的元素绑定函数。
正如您在问题中提到的,在Ajax之后,这是行不通的。因此,请将函数绑定到jQuery live/ On。bind vs live
jQuery(document).ready(function() {
jQuery(".tooltip").live("hover",function(){
jQuery('.tooltip_message').fadeToggle();
});
});
发布于 2015-02-21 11:12:42
这是一个非常常见的问题,不幸的是,这个问题太普遍了,以前已经回答过很多次了。这是我的标准答案。
你必须理解异步。
将$(".tooltip").hover
绑定到$(document).ready
函数中时,$(".tooltip")
还不存在。它最初不在你的DOM中。稍后,当ajax函数结束时,它将被创建,这需要一些时间(甚至几毫秒)。
所以$(".tooltip").hover(...
什么也不做。
然后创建$(".tooltip")
。
解决方案:
等待创建$(".tooltip")
,然后将单击绑定到它:
$('#content').load('content.php', function(){ // Do your ajax call with load() or ajax()
// this is the callback function. It will be executed after the load() finishes and content.php is fetched.
$(".tooltip").hover(function(){
$('.tooltip_message').fadeToggle();
});
})
https://stackoverflow.com/questions/28649915
复制