私はそのようなhtmlを持っています:
<li class="addToFriends"><a href="....">Something something<span>INSIDE SPAN</span>something</a></li>
アンカーをクリックしたときにAJAXリクエストを処理するために、クリックイベントでハンドラーを登録しました:
$('.addToFriends a').click(function(event){
var target = $(event.target);
if (target.is('a')) {
// if I click on SPAN element following fragment won't execute!
// do ajax request
}
event.preventDefault();
});
私の質問は次のとおりです。
- span要素でクリックイベントが発生するのはなぜですか? 結局、クリック イベントを SPAN 要素にバインドしませんでした
- 前の質問とは別に、SPAN クリック イベントを処理しない場合、ブラウザーはイベント バブリングを使用してアンカーのクリック イベントを発生させると考えました (event.stopPropagation() を呼び出さない場合)。しかし、そのクリックイベントは一度しか発生しないため、うまくいきませんでした
だから今、私はその問題を回避しました。私の解決策は次のとおりです。
$('.addToFriends a').click(function(event){
var target = $(event.target);
if (!target.is('a')) {
target = target.parent('a')
}
...
});
それでも、なぜこのように機能するのか、私は興味があります...
ありがとう、
パヴェウ