0

spanアンカーとを含むがありますspan。以下の例

<span id="x"><a id="a_in" href="">link</a><span id="x_in">x</span></span>

今、私はでmousenter/mouseleaveイベントを添付してspanid="x"ます。その上にマウスを置くと、 /がspan id="x"トリガーされます。問題は、親のマウスリーブの内側がトリガーされたときです。mousentermouseleavemouseoverspan id="x_1"span

私または親の場合にのみmousenter/mouseleaveをトリガーしたい。mouseentermouseleave

これを回避する方法はありますか?

4

4 に答える 4

2

短い答え:これを避けることはできませんが、mouseleave/enter が親でのみ発生することを判断できます。

function mouseleaveOrEnterHandler(e){
   e = e || window.event;
   var target = e.target || e.which;
   if(target.id=='x') {
      //do something here
   }
}
于 2010-10-15T08:11:08.707 に答える
1

どの要素でどのイベントを発生させたいかを具体的に指定してください。jQuery を使用している場合:$("span#x").hover(function() { //action logic for mouse enter }, function() { //action logic for mouse leave });

于 2010-10-15T08:29:30.490 に答える
0

OK...みんなありがとう。問題は、私がSPAN Xとオーバーラップし、mouseleaveをトリガーしたmouseenterに表示していた新しいdivにありました。

また...

Mouseover / mouseoutが期待どおりに機能しないことがあるため、MooToolsはmouseenterとmouseleaveを備えています。Mouseenterは、要素を入力したときにのみ起動し、マウスが要素の子を横切った場合は再度起動しません。

...それはあなたたちが提案していることをほとんど実行し、うまく機能します。 http://demos.mootools.net/Mouseenter

誰かがmootoolsを使用して伝播を停止する方法を探している場合に備えて...

$('myelement')。addEvent('click'、function(e){var event = e || window.event; if(event.stopPropagation){event.stopPropagation();} else {event.cancelBubble = true; }});

ご協力ありがとうございました!

于 2010-10-15T10:00:30.847 に答える
0

cancelBubble()とが必要ですstopPropagation()

ここを参照してください: http://www.thedutchguy.com/article/javascript-prevent-event-bubbling-parent-child-when-fired.html

また、ここ: http://www.openjs.com/articles/prevent_default_action/

于 2010-10-15T08:07:26.437 に答える