改变鼠标悬停的背景

时间:2013-01-28 10:03:47

标签: jquery

我想在new_r_div上更改鼠标悬停的li链接颜色 为此,我在链接ID中包含了悬停类。在鼠标上应该更改元素的背景 这是我的代码link,请参阅

HTML

<div id="response"> <a href="#">Response Request</a>
    <div class="new_r_div hidden">
        <ul>
            <li><a href="#" id="link">Confirm</a></li>
            <li><a href="#" id="link">Delete</a></li>
        </ul>
    </div>
</div>

的jQuery

$("#response").hover(
    function () {
        $('.new_r_div').removeClass('hidden');
    }, 
    function () {
        $('.new_r_div').addClass('hidden');
    }
);

$("#new_r_div").hover(
    function () {
        $('#link').addClass('hover');
    }, 
    function () {
        $('#link').removeClass('hover');
    }
);

CSS

.new_r_div {
    position:absolute;
    width:100px;
    height:40px;
    background:#ccc;
    overflow: hidden;
    border: solid 2px #ccc;
    background: #99CCFF;
    z-index: 9999;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
.hidden {
    visibility: hidden;
}
.hover {
    background:red;
}

8 个答案:

答案 0 :(得分:1)

#用于选择需要使用classSelector的id。请参阅下面的代码

$(".new_r_div").hover(function(){
    $('#link').addClass('hover');
},function(){
    $('#link').removeClass('hover');
});

http://jsfiddle.net/QQvv6/9/

答案 1 :(得分:1)

我注意到这段代码存在一些问题。它仅适用于一个a代码,因为有多个#link元素。以下代码应适用于两个锚点。

$("#response").hover(function(){
    $('.new_r_div').removeClass('hidden');
},function(){
    $('.new_r_div').addClass('hidden');
});

//switched selector to only target the anchor tags
$(".new_r_div li a").hover(function(){  
    $(this).addClass('hover');  //targeting anchor tags allow us to use this
},function(){
    $(this).removeClass('hover');
});

示例:http://jsfiddle.net/QQvv6/23/

答案 2 :(得分:0)

您的new_r_divclass而非id,因此选择器为.

试试这个

 $(".new_r_div").hover(function(){
 ....

答案 3 :(得分:0)

假设我已正确理解你的问题,你可以单独使用CSS - 不需要jquery:

.new_r_div li:hover {
    background-color: red;
}
$("#response").hover(
    function () {
        $('.new_r_div').removeClass('hidden');
    }, 
    function () {
        $('.new_r_div').addClass('hidden');
    }
);

Updated fiddle

答案 4 :(得分:0)

编辑: jsFiddle工作代码:http://jsfiddle.net/joquery/QQvv6/7/

您的代码中存在一些错误:

  1. 您不能拥有具有相同ID(id="link"
  2. 的元素
  3. new_r_div不是一个id,它是你的html
  4. 中的一个类
  5. 您希望将鼠标悬停在new_r_div的子项的每个列表项上。因此,您需要撰写$(".new_r_div li")而不是$(".new_r_div")
  6. 我已经更新了JavaScript:

    $("#response").hover(function(){
        $('.new_r_div').removeClass('hidden');
    },function(){
        $('.new_r_div').addClass('hidden');
    });
    $(".new_r_div li").hover(function(){
        $(this).addClass('hover');
    },function(){
        $(this).removeClass('hover');
    });
    

答案 5 :(得分:0)

$("#new_r_div").hover(...)

new_r_div是课程,不是id

<li><a href="#" id="link">Confirm</a></li>
<li><a href="#" id="link">Delete</a></li>

id必须是唯一的

你的例子可以在没有jquery的情况下编写:

.new_r_div:hover{
    background:red;
}

演示:http://jsfiddle.net/QQvv6/19/

<强>加了:http://jsfiddle.net/QQvv6/27/(悬停菜单项)

答案 6 :(得分:0)

HTML

<div id="response">
                <a href="#">Response Request</a>

<div class="new_r_div hidden">
    <ul>
        <li class="menuItem"><a href="#"  >Confirm</a></li>
        <li class="menuItem"><a href="#"  >Delete</a></li>

    </ul>
  </div>
</div>

Jquery的

$("#response").hover(function(){
    $('.new_r_div').removeClass('hidden');
},function(){
    $('.new_r_div').addClass('hidden');
});

$(".menuItem").hover(function(){
    $(this).addClass('hover');
},function(){
    $(this).removeClass('hover');
});

Fiddle Example

答案 7 :(得分:0)

首先:您使用了两次相同的ID“链接”。 id只能在文档中使用一次,id必须是唯一的。 第二:背景颜色的属性是“背景颜色”,而不是“背景”:) 第三:你很困惑:列表容器有一个类,但你试图通过id选择。

我想这就是你想要的:

    $("#response").hover(function(){
    $('.new_r_div').removeClass('hidden');
},function(){
    $('.new_r_div').addClass('hidden');
});
$(".new_r_div").find(".link").hover(function(){
    $(this).addClass('hover');
},function(){
    $(this).removeClass('hover');
});