0
$('.collapse').each(function() {
  var title=  $(this).siblings('.accordion-heading').find('a');
  $(this).on('show hide', function (e) {
    if(!$(this).is(e.target))return;
    title.parent().toggleClass('active', 300);
    title.parent().hasClass('active') ? $('input.party').prop('value', '') : $('input.party').val(title.siblings('.delete').prop('id'));

    var id = title.siblings('.delete').prop('id');
    var data = {id: id};
    $.post("times.php", data, function(result) {
      if(title.parent().hasClass('active')){
        $('.times').html('');
      } else {
        $('.times').html($.parseJSON(result));
      }
    })
  })
}) 

そのため、新しいパーティーを追加することで、html に新しいアコーディオン グループを追加していますが、新しく追加された要素でもこのすべてを機能させたくありません。ランダム関数よりも少し具体的であるため、役立つトピックは見つかりませんでしたeach(と思います)。この将来の要素のことは私にとって新しいことなので、いくつかの説明や、すでにチェックしたjquery Webサイト以外の場所への適切なリンクをいただければ幸いです。お時間をいただきありがとうございます!

基本的に私がやりたいことは、これ$(this).on('show hide', function (e) {を次のようなものに置き換え$(document).on('show hide', $(this), function (e) {ます。私が書いたものはうまくいきません。

4

2 に答える 2

1

これは、セレクタに一致するすべての新しいオブジェクトに適用されます

jQuery(document).on('show hide', '.accordion-heading a', function(event){
    ...
});
于 2013-06-13T14:17:26.387 に答える
1

イベント ハンドラーだけの場合は、イベント委任を使用して、動的に作成された要素のイベントをキャプチャすることもできます。

ここで使用しなければならない理由はない.eachので、省略してください。

$(document.body).on('show hide', '.collapse', function() {
    var title =  $(this).siblings('.accordion-heading').find('a');
    if(!$(this).is(e.target))return;
    // rest of the code...
});
于 2013-06-13T14:55:48.897 に答える