jQuery .delegate()不处理load和changeData事件

时间:2011-03-13 16:32:26

标签: jquery

有人可以启发我的jQuery委托,处理什么事件和什么不处理。以下代码不起作用

$("#browser").delegate( ".photo", {
    "load": function(e) {
        alert("photo loaded");
    }
});

但以下代码工作

$(".photo").load( function(e) {
    alert("photo loaded");
} );

我也尝试将changeData事件委托给一个不能正常工作的类

$("#browser").delegate( ".thumbnail", {
    "changeData": function(e, prop, value) {
        alert( prop + " = " + value );
    }
});

但以下代码工作

$(".thumbnail").bind( "changeData", function(e, prop, value) {
    alert( prop + " = " + value );
}

3 个答案:

答案 0 :(得分:11)

$("#browser").delegate( ".photo", {
    "load": function(e) {
        alert("photo loaded");
    }
});

可是:

$("#browser").delegate( ".photo", "load",
    function(e) {
        alert("photo loaded");
});

你不能在这些事件中使用live和delegate,因为它们不会冒泡。

答案 1 :(得分:6)

这些事件不会冒泡,因此不能与livedelegate一起使用。

答案 2 :(得分:0)

对于较新版本的jQuery,.on()方法在.delegate().live()方法之前受到青睐,它也不会以这种方式工作

// wrong
jQuery(selector).on('load', 'img', myFunc)

因为加载事件没有冒泡

像这样做

jQuery(selector).find('img').on('load', myFunc)