0

私は何百も持っています

<button class="lb">
  <div class="l"></div>
  <div class="c">2</div>
  <div class="r"></div>
</button>

これは、ページが読み込まれたときにすでにDOMに含まれているものと、javascriptを介して動的に追加されるものがあります。

誰かがボタンをクリックすると、ボタン内のdiv class="c"内の値が1だけ高くなります。

こんな風にできると思った

$(".lb").on("click", function(event) {
  $('.c', this).html(parseInt($('.c', this).html()) + 1);
  $(this).unbind('mouseout');
});

ただし、これはページロードで読み込まれる要素でのみ機能し、JSごとに挿入された新しい要素では機能しません。

足りないものが見つからないので、ヒントをいただければ幸いです。

ありがとう!ラファエル

4

2 に答える 2

3

.lbまたはの親へのイベント委任を使用しdocumentます。@Zolton Tothが指摘したようoffに、非推奨ではなくを使用する必要がありますunbind

$(document).on("click", ".lb", function(event) {
  $('.c', this).html(parseInt($('.c', this).html()) + 1);
  $(this).off('mouseout');
});
于 2013-01-23T17:52:54.923 に答える
1

.on()デリゲートとして使用するためのいくつかの概念が欠けています。

$(' --CONTEXT-- ').on('click', ' -- YOUR ELEMENT -- ', function () {

});

// like-wise to "unbind" using the new methodology
// you would use .off()
$(' --CONTEXT-- ').off('click', '-- YOUR ELEMENT --');

したがって、例の形式にすると、次のようになります。

$(document).on('click', '.lb', function () { });

しかしもちろん、これにより、コンテキスト(または「バブリングアップ」する場所)ドキュメントが高すぎます。このアイテムが表示される可能性のある場所を囲む大きな親を使用してみてください。パフォーマンスが向上します。

$('#someParent').on('click', '.lb', function () { });
于 2013-01-23T17:52:28.957 に答える