每次在UL标记的所有LI元素上都不会触发Jquery click事件

时间:2012-03-21 05:32:37

标签: jquery click

您好,

我创建了下拉列表。一个div标签包含ul,其中包含列表项。当用户点击li元素时,该值必须在输入框中更新。问题是点击事件没有触发一些li在第一种情况下,我放了3个LI元素,其中只有前两个元素触发事件但没有最后一个。在第二种情况下,我将LI元素更改为5.现在只有前3个元素触发但不是最后2个元素。 f 8元素5个元素触发,但不是最后3个元素。我对这种行为感到很困惑。我的代码可能有什么问题.. Here is the link 。你能帮帮我吗......

2 个答案:

答案 0 :(得分:3)

为什么这种效果过于复杂? 保持简短(KISS)

我为之前提出的问题创建了一个简单的演示,请检查here

另一个demo幻灯片生效。


更新

您的模糊功能正在创建问题,因为同时触发了多个事件,特别是$('html').click(),效果重叠。添加稍微延迟以使一切正常

/*Close value popup of the element which has lost focus*/
$('.irmNDrdnInput').blur(function(){
    drndValId = 'drdn-val-'+$(this).attr('id').split('-')[2];
    $('#'+drdnValId).delay(100).slideUp(300);
});

Working DEMO

答案 1 :(得分:0)

代码中的以下行导致问题:(我认为不需要,因为您也有$(html).click()个事件)

$('.irmNDrdnInput').blur(function(){
    drndValId = 'drdn-val-'+$(this).attr('id').split('-')[2];
    $('#'+drdnValId).slideUp(300);
});

演示:http://jsfiddle.net/6Kd67/5/

对于tab-press,您可以跟踪$('.irmNDrdnInput').keydown()事件中的keyCode:

if (event.keyCode === 9) {
    $('.irmNDrdnVal').slideUp(300);
    return false;            
}

演示:http://jsfiddle.net/6Kd67/7/