2011-12-31 7 views
2

古いバージョンのjquery(1.6.2)を使用していますので、デリゲートが機能していないようです。クリックイベントでデリゲートを使用しようとしているリストがありますが、リストがリロードされた後は失敗します。jqueryデリゲートがリストアイテムと連携していません

$(".image_result").delegate("li", "click", function() { 

//$('.image_result li').click(function() { 
    var imgInfo = $(this).attr('id').split(':'); 

    if(confirm('Are you sure you want to delete this image?')) { 
     $.post('delete_image.php?image_id=' + imgInfo[0] + '&user_id=' + imgInfo[1], function(data) { 

      if (data.st) { 
       var resp = data.html.split("|"); 

       $('#imageStats').html(resp[0]); 
       $('#imageTable').html(resp[1]); 
      } 
      else { 
       alert("Yikes, something went wrong"); 
      } 
     }, "json"); 
    } 
}); 

imageTable DIV新しいリストアイテム(image_result)私は何をしないのです

を保持している:ここで

は私の現在のコードですか?

+0

リストをリロードすると、 – frictionlesspulley

+0

のHTML構造も投稿できますか?クリアしてからlisを再設定しているのですか.image_result要素を破棄して再作成していますか? –

答えて

4

.delegate()のキーは、jQueryオブジェクト内の項目を破棄/置換できないことです(この場合は.image_resultです)。jQueryオブジェクトで使用するセレクタは静的でなければなりません。破棄または交換)

をお使いの場合と.image_result#imageTableの子であると仮定すると、あなたはおそらく代わりにこれを使用することができます。

$("#imageTable").delegate(".image_result li", "click", function() {...}); 

#imageTableために置き換え取得されていない、それはイベントハンドラですのでへの変更を存続します子オブジェクトとth eセレクタは、liオブジェクトの.delegate()の0に引き渡されます。

+0

それが問題でした。親ディビジョンのデリゲートを設定しました。私はそれを認識しませんでした。ありがとうございました...私は毎日何かを学びます:) – Paul

関連する問題