是否可以在jQuery中绑定图像更改事件

时间:2012-04-12 09:17:35

标签: jquery

我的页面上有图片。对于图像更改我使用的是ajax。我有dataTable,其中每行都有一个图像和一个(锚)元素。我正在制作一个脚本,我试图在其中迭代表格的每一行,如果每行的图像源属性包含subString" no-preview.jpg",则隐藏a(锚点) )那一行的元素。精细。但问题是当我的页面加载然后脚本运行并隐藏所有删除链接,但是当我选择使用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()

2 个答案:

答案 0 :(得分:1)

您至少有两个选择:

  • 在图片上收听load事件,每次加载图片时都应该调用它,
  • 创建自己的事件(例如。imagechange,最好是imagechange.mymodule等命名空间)并在每次图像更改后使用jQuery的.trigger()函数触发它 - 它将调用适当的事件处理程序(如果你附上它),

答案 1 :(得分: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
          }); 

});