1
$("#img-switcher").on("switchImageEvent", function(event, triggerID){
    $(this).attr('src',triggerID);
});
$("#page-container").on("click", "img.img-switcher", function() {
    var newSRC = $(this).attr('src');
    $("#img-switcher").trigger("switchImageEvent", [newSRC]);
});

这段代码似乎不适用于我的 PJAX。如果我最初加载一个页面,它会很好地选择元素并进行更改。但是,一旦我使用 PJAX 转到另一个页面,它将不再为 .on("click") 操作选择元素。难道我做错了什么?我之前尝试添加一个警报,var newSRC以查看它是否正确选择了带有 .on() 的元素,但事实并非如此。有任何想法吗?

4

1 回答 1

2

好吧,因为只有这段代码脱离了上下文,我假设您正在尝试将on用作live而不是将其用作delegate

使用 pjax,它使用 xhr 来加载没有附加事件的元素,这可能是一个问题。

因此,我的建议是使用未重新加载的父元素并在其上附加事件。像这样,使用最顶层的,未重新加载的元素,而不是正文:

$("body").on("switchImage", "#img-switcher", function(e, src){
  $(this).attr({ 'src': src });
});

$("body").on("click", "img.img-switcher", function() {
    $("#img-switcher").trigger("switchImage", $(this).attr('src'));
});
于 2012-10-16T16:50:23.660 回答