2013-03-07 102 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