为什么我的jQuery click处理似乎为它的一些目标,多次运行?

我申请:

$(".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 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");
});

这将确保该规则的动态,一旦应用到任何符合条件的类在文档中。

不是jQuery的错误- 工作演示

必须有在你的代码别的一个问题。 凡与元素id="test"在您的标记?

编辑:

刚看完乱“的回答,这听起来像一个合理的解释。

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

为了确保该功能只在您可以使用$点击事件执行一次一()(“newContentLink。”)。

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

试试你的提交输入元素赋予不同的名称。

我有一个类似的问题....想通了,我申请的变化功能在一个循环...即我前面的代码是....

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

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

采取了改变功能出来,宾果......它的工作.....

分类:jQuery的 时间:2015-03-16 人气:7
本文关键词: jQuery的,的onclick
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.856 (s). 10 q(s)