动态填充的UL项目第一次无法点击,之后很好

时间:2012-07-09 19:54:03

标签: jquery dynamic html-lists

我有一个jQuery函数,它接受输入并使用它来过滤链接列表。当输入任何内容时,该函数会清空现有的UL,然后使用新的LI元素填充它,每个元素都包含一个链接。这些链接与jQuery的“click”方法相连。

这些生成的链接可点击的,但前提是用户首先点击输入框外的页面上的任何其他位置。如果用户在填充列表后立即尝试单击链接,则链接不起作用。

可能提示?如果我改为右键单击链接并选择“Inspect Element”,它会将外部UL显示为活动元素,不是我单击的LI。如果我先点击其他任何地方然后检查元素,则LI 活动元素。

此外,如果我跳过清空UL的步骤,而只是附加到现有列表,则所有链接都按预期工作。

无论如何,在新列表填充后,UL似乎立即“在顶部”的事实似乎表明为什么链接没有被点击。因此,问题是为什么 UL会像那样接收焦点(或者至少在某些事情之前 - 点击页面上的任何内容)?

2 个答案:

答案 0 :(得分:0)

尝试使用 .on (以前的 .live )方法而不是 .click ,这样会连接到添加的任何内容自动到DOM:

//instead of:
$('.abc').click(function() { alert('hi'); });

//use this:
$('.abc').on('click', function() { alert('hi'); });

jQuery .on()

答案 1 :(得分:-1)

您可以模拟UL元素父级的点击(添加列表项之后),如下所示:

$("#idOfUl").parent().click();

这不是真正解决您的问题 - 这只是一种可能的解决方法。