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');
});

但这仅适用于页面加载时加载的元素,而不适用于新的 per-JS 插入的元素。

我找不到我缺少的东西,并希望得到任何提示。

谢谢!拉斐尔

4

2 回答 2

3

.lb使用事件委托给or的父级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 回答