Jquery:动态地将li项附加到ul,然后添加click,但是click贯穿每个li

jquery: dynamically appending li items to ul then adding click, but click runs through each li

本文关键字:li click 添加 然后 但是 动态 Jquery ul      更新时间:2023-09-26

所以我可能会接近这个错误,因为我正在学习,但我似乎无法弄清楚我在这里做错了什么(可能是简单的错误,但我有麻烦)。所以我尝试在标记中,点击按钮允许从对话框中进行选择对话框中的提交按钮包含对自定义函数的调用该函数执行一些逻辑然后将字符串附加到

buildListElementItem += "<li>something</li>";
$("#my-list").append(buildListElementItem);

然后bind click因为我需要每个列表项都代表一个选择面板类型

$("#my-list li").bind('click', function () {
   //processing stuff
});

一切都很好,但如果我添加多个项目到这个列表(一个接一个),你点击一个项目,它滚动通过每一个,这让我感到困惑,因为没有每个,我认为这应该只添加到一个项目....

所以有更多的这个函数/等,但我认为我的方法在这里是错误的??

我试过修改选择器喜欢一个类,我在字符串中添加的li,我试过使用。on,。live,。delegate或任何我能找到的东西,而不是绑定点击。

也许这是尝试执行此操作的简单方法类型错误,但我将非常感谢任何帮助,建议等。

编辑:只是添加更多的澄清

对话框允许用户从选择/下拉中选择项目,并且按钮点击(jquery ui)有函数调用下面的想法将项目添加到列表元素中,该列表元素作为选择面板。因此,他们可以填充面板上所需的项,然后单击每个项来填充并将数据与该项关联。

function addNewListItem(passedType)
{
    var buildListElementItem = "<li>" + passedType + "</li>";
    $("#my-list").append(buildListElementItem);
    $("#my-list li").bind('click', function () {
       otherStuff();
});

如果我这样做,我猜这会导致每个元素一次又一次地被绑定?不确定,但这是例外,当我单击面板上的单个li项时,它处理面板上的所有li项(otherStuff函数)。所以我认为从这些例子中,我开始理解这个问题,或者为什么这不起作用,但是我该如何处理我想要做的事情呢?永远感激你们!}

当您说"there is no each"时,您忽略了$("#my-list li")是一个jQuery选择器,即它返回与表达式匹配的所有元素:在这种情况下,在#my-list的子树中的所有li项。因此,当调用bind时,它将绑定到已经添加到元素中的每个li项。

你要找的是这样的东西:

buildListElementItem = $("<li>something</li>"); //constructs a jquery object you can bind to
buildListElementItem.bind('click', function () {
   //processing stuff
});
$("my-list").append(buildListElementItem);

这样,您就可以在添加元素之前绑定。