为什么我不能得到我正在盘旋的确切元素?

时间:2014-04-29 16:45:33

标签: javascript jquery html css

首先让我说我没有jQuery专家。但是,我有代码(包括在下面),它将抓住我悬停的元素。我遇到的问题是,如果我在<div id="literalContent">

中有以下结构
<div>
  <table>
    <tr>
      <td>
        <div>

我将鼠标悬停在最后<div>上,我看到了边界,那真是太棒了。但是,如果我想选择父表,则不会选中它。对我的愚蠢问题的任何想法都会很棒。

 $(function () {
        $('#literalContent').find("*").hover(
            function () {

                $('[class="SelectedItem"]').removeAttr("class");
                $(this).fadeIn(500, function () {
                    $(this).addClass("SelectedItem");
                })
                //$(this).addClass("SelectedItem");
                //$('#controllabel').html('hovering ' + $(this).prop("tagName"));
            },
            function () {
                if ($(this).attr('class') == "SelectedItem") {
                    $(this).removeAttr("class");
                }
                else {
                    $(this).removeClass("SelectedItem");
                }
            });
    }
    );

2 个答案:

答案 0 :(得分:0)

它似乎在这里工作 - http://jsfiddle.net/jayblanchard/ucM96/

$('#outer').find('*').hover(

function () {
    $(this).addClass('redBorder');
},

function () {
    $(this).removeClass('redBorder');
});

请注意,使用鼠标选择inner4会导致悬停也应用于inner3 - 由于它们之间的关系以及鼠标事件的处理方式。

通过执行诸如提供多个选择器之类的内容,您可以更加具体 -

$('.foo, .bar').hover(

function (e) {
    $(this).addClass('redBorder');
    console.log(e.target.id);
},

function () {
    $(this).removeClass('redBorder');
});

答案 1 :(得分:0)

要仅突出显示目标(而不是其任何祖先),您可以在mouseenter / mouseleave上的目标直接父级上切换类。

http://jsfiddle.net/kU3Ba/1/

$('#outer').find('*').hover(

function (e) {
    var o = $(e.currentTarget),
        par = o.parent();

    o.addClass('redBorder');

    if(par[0].id != "outer"){ // exclude "outer", since it is the wrapper

        par.addClass('hideBorder'); // parent still has "redBorder" class
                                    // "hideBorder" just hides it
    }

    console.log(e.currentTarget.id+" has focus");
},

function (e) {
    var o = $(e.currentTarget),
        par = o.parent();

    o.removeClass('redBorder');
    par.removeClass('hideBorder');

    if(par[0].id != "outer"){ // exclude "outer", since it is the wrapper
        console.log(par[0].id+" has focus");
    }

});

这将明显隐藏直接父母的边界,并且&#34;返回&#34;鼠标离开孩子时的边界。