0

私のページに画像があります。画像の変更にはajaxを使用しています。各行に画像と(アンカー)要素があるdataTableがあります。テーブルの各行を反復処理しようとしているスクリプトを作成しています。各行の画像ソース属性にサブストリング「no-preview.jpg」が含まれている場合、その行の a(anchor) 要素を非表示にします. 罰金。しかし、問題は、ページが読み込まれたときにスクリプトが実行され、すべての削除リンクが非表示になることですが、画像を選択し、ajax を使用して更新された画像を選択すると、ajax のためにスクリプトが実行されません。

ここで、画像の変更をリッスンするために使用できる画像のイベントがあるかどうかを尋ねたいと思います。これは、画像の scr 属性が変更されるたびに、そのイベントが jQuery でトリガーされます。イベントを委任する必要があるかもしれません。

編集

var saarcImages = $("#SaarcImage #saarcImagesTable tr").each(function(index){

    var $tr = $(this);
    var $image = $tr.find("img");

    if ($image.length != 0) {   //Image exist

        var imageSource = $image.attr("src");       
        var contains = imageSource.indexOf("no-preview.jpg") >= 0; // true
        if (contains) {

            $tr.find("a").fadeOut("slow");

        } else {

            $tr.find("a").fadeIn("slow");

        }
    }
}); //end of .each()
4

2 に答える 2

1

少なくとも 2 つのオプションがあります。

  • 画像のイベントをリッスンしloadます。画像が読み込まれるたびに呼び出される必要があります。
  • 独自のイベントを作成し (たとえばimagechange、できれば のように名前空間を付けて)、 imagechange.mymodulejQuery の.trigger()関数で画像が変更されるたびにそれをトリガーします - 適切なイベント ハンドラーを呼び出します (アタッチする場合)。
于 2012-04-12T09:29:02.330 に答える
0

多分あなたはこのようなものを探しています:

//YOUR AJAX CALL TO RETRIEVE IMAGE
$.post('yourURLhere',{myVar : myValue}, function(info) {

          //WAIT FOR IMAGE TO LOAD
          $('img[title="item_picture"]').load(function() {
                    //DO SOMETHING HERE ONCE IMAGE IS LOADED
          }); 

});     
于 2012-04-12T09:27:03.423 に答える