我有一段很好用的代码,但是一旦我在页面上刷新div,代码就会中断,并且.item_control_box不再被隐藏,我想我必须重写它才能使用。活着,但我不确定如何。
$(document).ready(function() {
$(".item_control_box").hide();
jQuery('.each_item_container').hover(function() {
jQuery(this).find('.item_control_box').show()
}, function() {
jQuery(this).find('.item_control_box').hide();
});
});
谢谢!
答案 0 :(得分:2)
您是否通过AJAX动态重新加载div?只是好奇。这就是我所看到的:
您呈现文档时将运行当前的js代码
$(document).ready(function() {
$(".item_control_box").hide();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这将使用已存在的类item_control_box隐藏所有CURRENT元素
jQuery('.each_item_container').hover(function() {
jQuery(this).find('.item_control_box').show()
}, function() {
jQuery(this).find('.item_control_box').hide();
});
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
使用class each_item_container将悬停事件处理程序附加到所有CURRENT元素,然后在悬停时找到item_control_box的子项。
});
如果您通过AJAX或其他方式将新数据加载到div中,则需要确保两件事:
1)首先不显示带有item_control_box的元素。这可以通过简单的style =“display:none;”
来完成2)确保将悬停事件分配给.each_item_container。你需要通过实时方法jQuery('。each_item_container')来实现.pive('hover',function()...由@PeterStuart描述
最后但并非最不重要的是,不确定您使用的是哪种版本的jquery,但在1.7+ live()方法中已弃用。改用on()方法。以下是参考链接:http://api.jquery.com/live/
答案 1 :(得分:1)
你会改变:
jQuery('.each_item_container').hover(function() {
到
jQuery('.each_item_container').live('hover', function() {
要回答您上面的评论,您的HTML应该没问题,只要您有一个名为“each_item_container”的div类。当你将鼠标悬停在它上面时,现在应该改变你的后备颜色:)
如果不起作用,请告诉我们。)