可能因为你的tr区域完全被td填充,所以e.target是td

解决方案 »

  1.   

    不应该吧,target是非IE浏览器下的事件属性,srcElement是IE下的事件,非IE的浏览器之下是默认执行的捕获事件,当然mouseenter这个应该对兼容已经处理了,你可以看下mouseenter函数的源代码,用封装好的框架,不好说是什么样的事件流~~
      

  2.   

    我是这样判断的
    因为$(e.target).is("tr") 显示为false
    而$(e.target).is("td") 显示为true
    mouseenter是jquery封装过的事件,
    这样判断结果相同
    e.target.nodeName  //td
    e.srcElement.nodeName  //td
      

  3.   

    你将tr的高度设为200px,td的高度设为100px再看看?
      

  4.   

    一样的,是不是td,tr有特殊的地方。
      

  5.   

    是一样的。可能是由于tr一定会被td填充。所以这种方法测试没用
    你在某个td中加入个div就知道了。你可以得到e.target=div的提示table这种方法不好测试,用div粗糙的做个小例子,你可以看到从外到内的层级,移动时从外围的div,ul,li的顺序都可以得到,由此可知,这种事件应该不会冒泡
    <script>
        $(".test").mouseover( function(e){
            alert(e.target.nodeName)
        });
    })
    </script>
    <style type="text/css">
    .test{float:left;width:500px;height:300px;border:1px solid #bfbfbf;}
    .test ul{ list-style:none; float:left;width:200px;height:150px;border:1px solid #bfbfbf;}
    .test ul li{ list-style:none;width:100px;height:80px;border:1px solid #ff9900;margin:30px;}
    </style>
    <div class="test">
    <ul>
        <li>asdfasfd</li>
    </ul>
    </div>
      

  6.   

    我也用div套div试过了,完全符合预期。碰到table就乱了,所以怀疑tr,td有特殊的地方,因为tr都被td填充了,怀疑事件到底是tr引发的还是td引发的,改成$("td").mouseenter( function(e){});  e.target仍然是td,如果是tr引发绑定到td上的函数就不该执行,如果是td引发绑定到tr上的函数就不该执行。
    也许该看jquery的源码,谁看过源码能解释。
      

  7.   

    如果把一个tr中的td全部去掉,只是写一些东西在tr里面,那么alert(e.target.nodeName),这句话弹出的为空,这个是什么情况?难道tr不算是一个HTML元素,不可能吧,期待大神的解释~~~
      

  8.   

    建议楼主去看看这篇文章http://nuysoft.iteye.com/blog/1198058看完你就懂了
      

  9.   

    呵呵,你要是在给tr绑定事件以外,再单独给td绑定个同样的事件,但return false,估计就不会了
    比如:
    $("table tr td").mouseover( function(e){
           return false;
    });这样看来,还是冒泡了的意思呀
      

  10.   

    这个我也试过,td的mouseover事件中阻止冒泡,tr的mouseenter事件也不执行,同样mouseout对mouseleave。这两组事件到底有什么关系?
      

  11.   

    将mouseenter修正为mouseover,mouseleave修正为mouseout 什么意思,还没看懂原代码。
      

  12.   

    只是jquery的事件而已
    mouseenter将只在进入的第一次生效,不像onmouseover一样,移来移去的还能触发
      

  13.   

    用onMouseEnter、onMouseLeave来代替onMouseOver、onMouseOut,他们的作用基本相同,前者不会发生冒泡。
      

  14.   

    看看这篇啊有帮助
    http://techbbs.zol.com.cn/1/9_1913.html###