使用jquery识别悬停元素而不使用id?

时间:2012-01-04 13:37:03

标签: javascript jquery

有没有办法让jQuery知道你刚刚推出了哪个div而没有使用id?

基本上我有以下情况:

如果用户将鼠标悬停在div上,则会变为红色。 如果用户将鼠标悬停在另一个div上,则所有div都将变为白色(基本上重置所有内容),当前悬停在div上的红色变为红色。 但是,如果用户翻过div将其变为红色,然后返回到同一个div,我不希望它返回白色然后再变为红色。

4 个答案:

答案 0 :(得分:2)

鼠标悬停时添加一个类,然后再次鼠标悬停时检查该类是否存在。如果它没有,那么从所有div中清除该类。如果您不想使用课程,可以使用.data.removeData

$('div').on('mouseover', function() {       
    if (!$(this).hasClass('red')) {
       $('div').removeClass('red');
    }
    $(this).addClass('red'); 
});

JSFiddle Example

答案 1 :(得分:0)

当盘旋时,给它一个临时课:

$(this).addClass();

然后,当您准备删除它时,请使用:

$(this).removeClass();

答案 2 :(得分:0)

请勿使用:

HTML:

<div>
    <span>1</span>
    <span>2</span>
    <span>3</span>
</div>

JS:

$("div span").click(function(){
  $(this).closest("div").find("span").not(this).css("background", "#fff");
  $(this).css("background", "#f00");
});

答案 3 :(得分:0)

这是另一种解决方案:http://jsfiddle.net/adeneo/ep39L/1/

var last;

$('div').mouseenter(function(e) {
    var elm = $(e.target);
    if (last != elm) {
        $('div').css('background', 'white');
        elm.css('background', 'red');
    }
    last=elm;
    $('div').eq(2).html(last.index()+1);
});