リスト内の「li」要素内のさまざまな要素に対して、さまざまなデリゲートクリックハンドラーを作成しようとしています。例:
<ul id='myList'>
<li>
<p>First item.</p>
<button>button1</button>
<button>button2</button>
</li>
<li>
<p>Second item.</p>
<button>button1</button>
<button>button2</button>
</li>
</ul>
ユーザーが(任意のアイテムの)button1をクリックすると、そのイベントを取得して、伝播を停止します(button2インスタンスでも同じ)。親li要素をクリックするユーザーは、別のハンドラーになります。
$('#myList').delegate('li', 'click', function() {
alert("You clicked a parent <li> item!");
});
$('#myList').delegate('button', 'click', function(event) {
event.stopPropagation();
event.stopImmediatePropagation();
alert("You clicked a button (but which one?)!");
});
つまり、1つの問題は、button1インスタンスのデリゲートとbutton2インスタンスのデリゲートをどのように設定するかということです。上記の例の2番目のデリゲートは、ボタンがクリックされたときに起動しますが、親liアイテムのハンドラーが呼び出されるため、event.stopPropagation()は機能しないようです。
- - - アップデート - - - - - - -
また、event.stopImmediatePropagation()を呼び出そうとしましたが、効果はありませんが、親ハンドラーも呼び出されています。
ありがとうございました