シナリオ
私はユーザーのリストを持っています、各リストアイテムの中には<header>
と<div>
ラッパーがあります-彼らは兄弟です:
<li class="user">
<header>
// ...
</header>
<div class="user-wrapper">
// ...
</div>
</li>
ユーザーがクリックdiv
されたときにラッパーを切り替えています。header
現在機能しているもの:
// the handler is called
$('li.user > header').live('click', function () {
$(this).next('.user-wrapper').toggle();
});
live()
非推奨になり、jQuery 1.7.2を使用しているので、を使用したいと思いますon()
。
動作しないもの:
// Direct style
$('li.user > header').on('click', function () {
$(this).next('.user-wrapper').toggle();
});
// Delegated style
$('li.user').on('click', 'header', function () {
$(this).next('.user-wrapper').toggle();
});
どちらon()
のシナリオでも、匿名ハンドラー関数は呼び出されていません。
質問
まず...なぜon()
窒息するのですか?
次に...デリゲートスタイルを使用して機能する場合、上記と同じ方法でヘッダーの兄弟divを参照できますか?