2013-03-07 96 views
0

我有了这个jQuery的,这显然是不工作:引导手风琴禁止打开

是由这个产生
$('input.descriptionLC').click(function(){ 
    $('.collapse').collapse('hide') 
}); 

我的HTML代码中环/追加:

for (i=0; i < nodeArr.length; i++){ 
    $('#accordion2').append('<div class="accordion-group">' + 
    '<div class="accordion-heading">' + 
    '<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapse' + i + '">' + 
     '<hr class="inLC">' + 
     '<div class="divLC">' + 
      '<p class="titleLC">' + nodeArr[i][0] + '</p>' + 
      '<p class="imgWrap"><img class="imgLC" src="img/On_slider.png"></p>' + 
      '<input type="text" class="descriptionLC" id="description' + i + '">' + 
     '</div>' +  
    '</a>' + 
    '</div>' + 
    '<div id="collapse' + i + '" class="accordion-body collapse">' + 
    '<div class="accordion-inner">' + 
     'Anim pariatur cliche...' + 
    '</div>' + 
    '</div>' + 
    '</div>' 
); 
} 

回答

0

你想用.on代替.click,因为你的DOM正在改变。

请参阅this answer。 。将会(并且应该)用来观察变化区域的父母的变化;一旦更改已执行,它将自动重新绑定到选定子元素的所有事件(使用过滤器)。在这个答案中,我将更详细地介绍如何使用它。

总之,虽然这是无效的(你应该改变的身体只包含DOM的变化部分的一些格):如果你想

$('body').on("click", 'input.descriptionLC', function(e){ 
     $('.collapse').collapse('hide') 
}); 

只是下面的手风琴项目

$('body').on("click", 'input.descriptionLC', function(e){ 
     $(this).next('.collapse').collapse('hide') 
}); 
+0

我不知道为什么,但由于某种原因,这会打开页面上的所有手风琴,30+。 – dezman 2013-03-07 16:42:00

+0

是的,这会打开所有文档,因为您正在为整个页面选择.collapse。如果你只想下一个...编辑答案 – 2013-03-07 16:42:30

+0

??我想让他们都不开放。 – dezman 2013-03-07 16:44:29

0

jQuery的

$('body').on('click', 'input.descriptionLC', function(e){ 
    $('.collapse').collapse('hide'); 
}); 

请参阅jQuery on docs

+0

不,nonono,你永远不应该将事件绑定到文档! – 2013-03-07 16:39:13

+0

在途中更高效...... – 2013-03-07 16:40:15

+0

真的吗?我认为这是取代那样的现场活动? – soyuka 2013-03-07 16:40:17