JQuery - .hover()在.loading图像和.appended到.find()div之后

时间:2011-01-24 16:51:35

标签: jquery html image click hover

嗨:)我遇到了一些麻烦。

(简短形式:每当页面由.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功能都不起作用。

任何人都有可能导致所有这些骚动的暗示?

2 个答案:

答案 0 :(得分:3)

如果您在页面加载(异步等)之后加载元素,则需要使用hover方法附加click.live()等处理程序。

以下是API页面的链接:http://api.jquery.com/live/

请注意,.live()不支持所有jQuery更智能的侦听器(如hover)。您可能最终必须手动实例化mouseovermouseout

$("imgt").live('mouseover', function(){...

$("imgt").live('mouseout', function(){...

通过创建自己的听众可以解决这个问题,但这是另一个问题的另一个答案。

答案 1 :(得分:1)

失败的原因是因为当您使用Javascript向页面添加新项目时,DOM会更改并且需要重新呈现Javascript。

http://api.jquery.com/live/可以为您解决此问题,或者您可以尝试实现自己的方法来检查DOM是否已使用.change()处理程序进行了更改。