2016-05-29 3 views
0

私はこの経験はもっとあるはずですが、私は解決できないようです。リンクやその中の何かをクリックすると、私はこれを$(e.target)にして親やその他のものを呼びたいと思っています。

スクリプトの内訳は次のようになります。もちろん、この

$(document).on('mousedown', function(e) { 
    if ($(e.target).is('ul.SiteNav>li>a')) { 
    alert('Hello World!') 
    } 
}); 

がちょうどスニペットですが、それにもかかわらず、私は私の検索にもかかわらず、$(e.target)使用に新たなんだ、私はあなたがまだクリックしているので、あなたが<a></a><i></i>をクリックできない理由と解決できませんリンクは、あなた/ ...ここ

+0

あなたはそれをクリックすることができ、あなたが実際にイベントを取得します。クリックした要素はe.targetのみです。それは理にかなっています。ハンドラはドキュメント上にあり、要素は「私」です。なぜリンクがクリックを得るのでしょうか? – GolezTrol

+0

@GolezTrolは、 'ul.SiteNav> li> a'ではなく' event.target'を使用する利点がありますか?] \ –

+0

クリックされた実際の要素を知りたい場合は、ユースケースによって異なります。 – GolezTrol

答えて

1

targetが最も深いレベルの要素は、あなたが実際に相互作用が、どのような可能性があなたを混乱さすると、そのイベントのバブルアップしているものは何でもなります私の問題のJSFiddle例ですされていませんドンツリーのでイベントハンdlerはまだ親にバブルとは、あなたが

if ($(e.target).closest('.SiteNav a').length){ 
    // code if <a> expected 
}else{ 
    // do something else when not <a> 
} 

closest()も実際のターゲットが含まれてやりたいと、それはだ動作するようにイベントハンドラ

使用closest()にトリガする子をクリックし、<a>クリックを聞いていました始点から上に向かって

+0

私の[JSFiddle](https://jsfiddle.net/sLyky1s0/1/)が更新されました。あなたの提案はうまくいかないようですが、ありがとうございます。 [GolezTrol答え](http://stackoverflow.com/a/37514968/2199267)完璧に見つけることができます、あなたのように近くにある! –

+1

が不完全な '{'構文エラーを修正するとうまくいきます。https://jsfiddle.net/sLyky1s0/2/バージョンのコンソールでエラー – charlietfl

+0

を見つけてください_Facepalm!_これを見つけたはずです... –

0

これをクリックすると、実際にイベントが表示されます。クリックした要素はe.targetのみです。それは理にかなっています。ハンドラはドキュメント上にあり、要素はiです。なぜリンクがクリックするのですか?

closest()を使用して親チェーン内で見つけることができます。要素自体またはその親の1つが指定されたセレクタに一致すると、結果が返されます。

$(document).on('mousedown', function(e) { 
 
    if ($(e.target).closest('ul.SiteNav>li>a').length > 0) { 
 
    alert('Hello World!') 
 
    } 
 
});
.SiteNav { 
 
    List-style:none; 
 
} 
 
a { 
 
\t float:left; 
 
\t height:42px; 
 
\t line-height:42px; 
 
\t padding:0 10px; 
 
\t color: #f7dd71; 
 
\t text-decoration: none; 
 
\t font-size: 14px; 
 
\t font-family: "Comic Sans MS", cursive, sans-serif; 
 
\t font-weight: bold; 
 
} 
 
a:nth-of-type(1) { padding-right:2px; } 
 
a:nth-of-type(2) { padding:0 5px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="SiteNav"> 
 
    <li><a href="javascript:;" data-link="Reply">Reply</a></li> 
 
    <li><a href="javascript:;" data-link="Reply"><i class="fa fa-angle-down"></i></a></li> 
 
</ul>

+0

華麗で完璧な作品です。ありがとうございました! –

関連する問題