13

我申请:

$(".newContentLink").click(function() {
    $("#test").append("1");
});

对此:

<span id="contents">
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
<span id="content1" class="content study">
</span>
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
<span id="content3" class="content study">
</span>
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
<span id="content4" class="content category">
</span>
<input class="newContentLink" type="submit" style="width: 100%;" value="CREATE A NEW CONTENT"/>
</span>

为什么当我点击前 2 个按钮时它加 111,下一个按钮加 11,最后一个按钮加 1?

4

7 回答 7

20

无法复制。我怀疑你在歪曲——主要是过度简化——你的情况。准确地说,我相信您是在动态添加这些输入,并且$(".newContentLink").click(...)每次都调用——这自然会不断将点击处理程序的额外副本应用到.newContentLink页面中的每一个。

因此,您创建的最新输入具有一份点击处理程序副本并附加了一份1. 第二个最近的有两个副本和附加11。第三个有三个和 appends111等。

为防止这种情况发生,请将 click 处理程序应用于新创建的 DOM 元素,而不是$(".newContentLink")(这始终意味着every .newContentLink)。

于 2009-07-24T14:45:47.307 回答
7

或者您可以在每次添加新元素时取消绑定点击事件

$('.newContentLink').unbind('click');

$(".newContentLink").click(function() {
    $("#test").append("1");
});
于 2012-08-18T00:37:00.363 回答
6

正如混乱所说,您可能click()每次添加一个时都会调用,并且它们正在累积。

如果您要动态地将这些项目添加到文档中,并且需要确保将这个功能添加到您添加的每个项目中,那么使用 live 怎么样?

$('#contents').on('click', '.newContentLink', function() {
    $("#test").append("1");
});

这将确保将规则动态应用于文档中的任何合格类。

于 2009-07-24T14:54:14.563 回答
3

为确保该功能仅在一次单击事件上执行一次,您可以使用 $(".newContentLink").one();

$(".newContentLink").one(function() {
    $("#test").append("1");
});
于 2012-07-18T12:55:31.453 回答
2

不是 jQuery 错误 -工作演示

您的代码中的其他内容一定有问题。id="test"标记中的元素在哪里?

编辑:

只需阅读混乱的答案,这听起来像是一个合理的解释。

顺便说一句,元素 ID 在 HTML 标记中必须是唯一的 - 这是 HTML 规范的一部分,可能是另一种可能的解释

于 2009-07-24T14:49:26.787 回答
1

尝试为您的提交输入元素指定不同的名称。

于 2009-07-24T14:43:34.817 回答
1

我有一个类似的问题......发现我正在循环应用更改函数......即我之前的代码是......

$("table#UserIRTable > tbody > tr").each(function()
{
   ..............
   ..............

  $("input[id='thisMonthSupply']").change(function(e){  
      ......
    });
  ..........
  ..........
}

拿出改变功能和宾果游戏......它工作......

于 2009-12-03T06:06:54.847 回答