所以我可能正在接近这个错误,因为我正在学习,但我似乎无法弄清楚我在这里做错了什么(可能是简单的错误,但我遇到了麻烦)。因此,我试图在标记内有一个按钮单击,允许从对话框中进行选择,对话框中的提交按钮包括调用自定义函数,该函数执行某些逻辑,然后将字符串附加到类似内容:
buildListElementItem += "<li>something</li>";
$("#my-list").append(buildListElementItem);
然后绑定点击,因为我需要每个列表项代表选择面板类型的东西
$("#my-list li").bind('click', function () {
//processing stuff
});
一切正常但是如果我在这个列表中添加多个项目(一个接一个)并且你单击一个项目,它会滚动每个项目,这使我感到困惑,因为没有每个项目,我认为这应该只添加这是一个项目......
所以这个函数还有更多的东西/但是我认为我的方法在这里是错误的吗?
我已经尝试将选择器修改为类似于我在li的字符串中添加的类,我尝试使用.on,.live,.delegate或任何我能找到的而不是绑定点击。
也许这是尝试执行此操作的简单方法类型错误,但我非常感谢任何帮助,建议等。
编辑:只需添加更多内容以便澄清
Dialog允许用户从选择/下拉选择项目,按钮点击(jquery ui)具有调用以下想法的功能,将项目添加到列表元素,该列表元素用作选择面板。因此,他们可以填充面板上所需的项目,然后单击每个项目以填充并将数据与该项目相关联。
function addNewListItem(passedType)
{
var buildListElementItem = "<li>" + passedType + "</li>";
$("#my-list").append(buildListElementItem);
$("#my-list li").bind('click', function () {
otherStuff();
});
如果我这样做,我猜这会导致每个元素一遍又一遍地被绑定?不确定,但这有效的例外,当我点击该面板上的单个li项目时,它处理面板上的所有li项目(otherStuff函数)。所以我想从示例中我开始理解这个问题或为什么这不起作用,但是我如何处理我想要做的事情呢?永远赞赏你们! }
答案 0 :(得分:2)
当你说“没有每个”时,你省略$("#my-list li")
是一个jQuery选择器,即它返回与表达式匹配的所有元素:在这种情况下,子树中的所有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);
这样,您可以在添加元素之前进行绑定。