嗨:)我遇到了一些麻烦。
(简短形式:每当页面由.each()填充时.hover和.click函数都不会工作。虽然我手动填充页面.hover()和.click()的工作方式类似于魅力)
以前我有这个:
<imgThumb imgn="1">thumb</imgThumb>
<imgThumb imgn="2">thumb</imgThumb>
这个,
$("imgt").hover(
function () {
var imgN = $(this).attr("imgn");
var img = new Image();
$(img).load(function(){
$(this).hide();
$("#mainRight_PubSpot").append(this);
$(this).fadeIn();
}
)
.attr("src","image/thumb"+imgN+".jpg");
},
function () {
$("#mainRight_PubSpot").find("img:last").remove();
}
);
工作就像一个魅力,没有大人物。直到我用这个替换<imgThumb>
:
$.get('gallery.php',
function(data){
var obj = jQuery.parseJSON(data);
//alert(obj)
$.each(obj,function(index, value){
//alert(this);
var n = index+1;
//alert(""+n+" "+index);
var nimg = new Image();
$(nimg).load(function() {
$(this).hide();
/*$("#galImg").css({
'width':50,
'height':50
});*/
$("#mainLeft_imgHold").append("<imgt imgn="+n+"></imgt>")
$("#mainLeft_imgHold").find('imgt:last').append(this);
$(this).fadeIn();
}).attr({
src:""+this,
imgn:""+n,
id:"imgThumb"
});
});
}
);
现在图像加载时没有任何汗水,但是.hover和.click功能都不起作用。
任何人都有可能导致所有这些骚动的暗示?
答案 0 :(得分:3)
如果您在页面加载(异步等)之后加载元素,则需要使用hover
方法附加click
和.live()
等处理程序。
以下是API页面的链接:http://api.jquery.com/live/
请注意,.live()
不支持所有jQuery更智能的侦听器(如hover
)。您可能最终必须手动实例化mouseover
和mouseout
:
$("imgt").live('mouseover', function(){...
$("imgt").live('mouseout', function(){...
通过创建自己的听众可以解决这个问题,但这是另一个问题的另一个答案。
答案 1 :(得分:1)
失败的原因是因为当您使用Javascript向页面添加新项目时,DOM会更改并且需要重新呈现Javascript。
http://api.jquery.com/live/可以为您解决此问题,或者您可以尝试实现自己的方法来检查DOM是否已使用.change()
处理程序进行了更改。