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>'
  );
}
4

2 に答える 2

0

DOM が変更されているため、.click の代わりに .on を使用したい。

この回答を参照してください。.on は、変更領域の親の変更を監視するために使用されます (また、使用する必要があります)。変更が実行されると、すべてのイベントが選択したサブエレメントに (フィルターを使用して) 自動的に再バインドされます。その回答では、それを使用する方法のより詳細な説明を提供します。

要するに、これは非効率的ですが ( body を DOM の変更部分だけを含む div に変更する必要があります):

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

次のアコーディオンアイテムだけが必要な場合:

$('body').on("click", 'input.descriptionLC', function(e){
      $(this).next('.collapse').collapse('hide')
});
于 2013-03-07T16:37:00.270 に答える
0

Jクエリ

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

ドキュメントの jQuery を参照してください

于 2013-03-07T16:38:41.580 に答える