0

我正在尝试在 ul 中创建一个元素列表,每个元素都有自己的单击和悬停功能,但由于某种原因,所有列表元素都绑定了我尝试绑定的最后一个函数。我已经尝试了很多解决方法,但它们似乎都产生了相同的效果。这是我的代码(用想法而不是实际变量编写

for ( var i in JSON_object) {
    var li = document.createElement('li');
    $(li).attr("id","listitem" + i.toSting() );
    $(li).text(JSON_object[i]["name"]);
    $(li).hover(function1, function2);
    $(li).click(function3);
    $("ul").append(li);      
}  

这会正确显示每个列表项,包括为每个列表项提供自己的文本和 ID。但是所有列表项都绑定了 LAST 项单击和悬停功能,即使我尝试使用列表元素的 id 绑定该功能,即:

    $("listitem" + i.toSting()).hover(function1, function2);
    $("listitem" + i.toSting()).click(function3);

任何帮助将不胜感激,谢谢。

4

1 回答 1

0

您提供的代码没有任何问题。

我在这里的猜测是,您的function1(),function2()function3()并没有正确编写以引用this指针,以便他们可以辨别是哪个元素导致了事件,或者那些函数正在尝试使用i他们无法执行的变量,因为for循环将完成并且只包含的最后一个值i。如果您披露这些功能的代码,我们可以进一步建议如何更正它们。

我可以建议使用 jQuery 链接对您的代码进行一些简化/优化:

for ( var i in JSON_object) {
    var li = document.createElement('li');
    $(li).attr("id", "listitem" + i)
        .text(JSON_object[i]["name"])
        .hover(function1, function2);
        .click(function3);
        .appendTo("ul");      
}  
于 2013-10-25T02:08:48.020 回答