jQuery.load(function(){})事件无法与.get()协同工作?

问题描述 投票:0回答:1

所以我在我正在工作的网站上拥有此脚本,该脚本基本上是从数据库加载图像并将其放入div中。加载完所有图像后,我希望它触发一个滚动插件(smoothdivscroll)。但是我找不到使最后一部分起作用的方法。

这里是代码:

$.get("pages/photosgigs.php", { gig: $(this).attr("id")}, function(data) {
    $('#makeMeScrollableGall').html(data)
    $(window).load( function() {
        $("#makeMeScrollableGall").smoothDivScroll();
        resize();
    });
});

photosgigs.php上的php脚本返回一个简单的<img class="photo" src="..." />。我也用$("img.photo").load()进行了尝试,尽管我知道它会在加载第一个图像时触发,但也无法正常工作。也尝试过$("#makeMeScrollableGall").load(),也不起作用。

我开始认为我的问题在于我的图像是动态加载的。这是正确的吗?

还是我只是做错了什么?

jquery get load
1个回答
1
投票

首先,window.onload很少是您想要的。当页面first加载时,onload事件将触发once,它将不会再次触发...因此,当前,您正在为已触发并且不会触发的事件添加一个侦听器。而是在图像上使用load事件,以检查是否尚未触发(如果从缓存加载,则可能触发)。

这些更改如下所示:

$.get("pages/photosgigs.php", { gig: $(this).attr("id") }, function(data) {
  //load data, find the photo we just added
  $('#makeMeScrollableGall').html(data).find('img.photo').load(function() {
    //when the load event fires for the image, run this
    $("#makeMeScrollableGall").smoothDivScroll();
    resize();
  //loop through the loaded images (just one) but this is easier
  }).each(function() { 
     //if the image was already loaded (cached) fire the load event above
     if(this.complete) $(this).load(); 
  });
});

[.complete正在检查图像是否已加载,是否正在触发我们的事件处理程序,只需通过调用.load().load()的快捷键)进行绑定即可。

© www.soinside.com 2019 - 2024. All rights reserved.