我申请:
$(".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?
无法复制。 我怀疑你是歪曲 - 简单化,主要是 - 你的情况。 准确地说,我相信你动态添加的输入,并调用$(".newContentLink").click(...)
每一次-这,自然,不断应用单击处理的其他副本的每个.newContentLink
在这页纸。
所以,你创建的最新输入具有单击处理程序的一个副本,并附加一个1
。 第二最近有两个副本,并附加11
。 第三有三个,并追加111
等。
为了防止这种情况,应用单击处理程序到新创建的DOM元素,而不是$(".newContentLink")
这总是意味着每 .newContentLink
)。
或者您也可以在每次解除绑定click事件添加了新的元素
$('.newContentLink').unbind('click');
$(".newContentLink").click(function() {
$("#test").append("1");
});
作为乱说 ,你可能会调用click()
每次添加一个时间,他们正在积累。
如果你动态地添加这些项目的文件,并需要确保此功能被添加到您添加的每一个,关于使用生活怎么样?
$('#contents').on('click', '.newContentLink', function() {
$("#test").append("1");
});
这将确保该规则动态应用一次以任何限定类在文档中。
为了确保功能只在点击事件,你可以使用$执行一次一个()(“newContentLink。”)。
$(".newContentLink").one(function() {
$("#test").append("1");
});
没有一个jQuery错误- 工作演示
必须有与其他人在你的代码的东西有问题。 凡与元素id="test"
在您的标记?
编辑:
刚看完乱的回答 ,这听起来像一个合理的解释。
顺便说一句,元素ID必须HTML标记内是唯一的 - 这是HTML规范的一部分,可能是另一个可能的解释
我有一个类似的问题....想通了,我申请的变化功能在一个循环...即我先前的代码是....
$("table#UserIRTable > tbody > tr").each(function()
{
..............
..............
$("input[id='thisMonthSupply']").change(function(e){
......
});
..........
..........
}
拿着更改功能出来,宾果游戏...它的工作.....
文章来源: Why does my jQuery click handler appear to run multiple times for some of its targets?