在悬停时改变bg颜色,jquery

时间:2011-11-16 22:26:23

标签: php jquery hover

我有一段很好用的代码,但是一旦我在页面上刷新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();
    });
});

谢谢!

2 个答案:

答案 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类。当你将鼠标悬停在它上面时,现在应该改变你的后备颜色:)

如果不起作用,请告诉我们。)