jquery 悬停和 ajax 分页在一起时出现错误

发布于 2024-11-27 19:00:35 字数 884 浏览 1 评论 0原文

感谢您的阅读。我的 WordPress 网站上有一些代码,第一个代码在图像上添加了一个覆盖层,其中包含颜色、文章标题和转到项目的链接。第二个代码使用 jQuery 添加 ajax 分页。

问题是我的项目包含图像和 jquery 覆盖工作完美,但是当他们单击调用 ajax 分页的上一个项目链接时,jquery 覆盖停止工作。

我一直在尝试不同的选择,但也许我没有找到解决问题的正确方法。有人知道吗?

提前致谢。

代码:

    // PORTFOLIO HOVER EFFECT   

 jQuery('ul.portfolio-thumbs li').hover(function(){  
         jQuery(".overlay", this).stop().animate({top:'0px'},{queue:false,duration:300});  
     }, function() {  
        jQuery(".overlay", this).stop().animate({top:'190px'},{queue:false,duration:300});  
    });  


    // POSTS NAVIGATION     
    jQuery('#posts-navigation a').live('click', function(e){
        e.preventDefault();
        var link = jQuery(this).attr('href');
        jQuery('#ajax-container').fadeOut(500).load(link + ' #ajax-inner', function(){ jQuery('#ajax-container').fadeIn(500); });
    });

Thanks for reading. I have some codes on my wordpress site, the first one adds an overlay over an image with a color, the article title and a link to go to the project. The second code adds an ajax pagination using jQuery.

The thing is that i have my projects with images and the jquery overlay owrking perfect, but when they click on the previous projects link that calls the ajax pagination, the jquery overlay stops working.

I have been trying different options, but maybe i'm not on the correct way to solve it. Does anyone has a clue?

Thanks in advance.

The codes:

    // PORTFOLIO HOVER EFFECT   

 jQuery('ul.portfolio-thumbs li').hover(function(){  
         jQuery(".overlay", this).stop().animate({top:'0px'},{queue:false,duration:300});  
     }, function() {  
        jQuery(".overlay", this).stop().animate({top:'190px'},{queue:false,duration:300});  
    });  


    // POSTS NAVIGATION     
    jQuery('#posts-navigation a').live('click', function(e){
        e.preventDefault();
        var link = jQuery(this).attr('href');
        jQuery('#ajax-container').fadeOut(500).load(link + ' #ajax-inner', function(){ jQuery('#ajax-container').fadeIn(500); });
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆梦 2024-12-04 19:00:35

我在同一天找到了解决方案,@BrockAdams 帮助我解决了疑虑。我将代码放在这里是因为它对某人有帮助。

jQuery('ul.portfolio-thumbs li').live('hover', function(event){  
    if (event.type == 'mouseenter') {
          jQuery(".overlay", this).stop().animate({top:'0px'},{queue:false,duration:300});  
        } else {  
         jQuery(".overlay", this).stop().animate({top:'190px'},{queue:false,duration:300});  
         }
     });  


jQuery('#posts-navigation a').live('click', function(e){
        e.preventDefault();
        var link = jQuery(this).attr('href');
        jQuery('#ajax-container').fadeOut(500).load(link + ' #ajax-inner', function(){ jQuery('#ajax-container').fadeIn(500); });
    });

I've found the solution in the same day and @BrockAdams helped me with the doubts. I'm putting here the code because it can be helpful for someone.

jQuery('ul.portfolio-thumbs li').live('hover', function(event){  
    if (event.type == 'mouseenter') {
          jQuery(".overlay", this).stop().animate({top:'0px'},{queue:false,duration:300});  
        } else {  
         jQuery(".overlay", this).stop().animate({top:'190px'},{queue:false,duration:300});  
         }
     });  


jQuery('#posts-navigation a').live('click', function(e){
        e.preventDefault();
        var link = jQuery(this).attr('href');
        jQuery('#ajax-container').fadeOut(500).load(link + ' #ajax-inner', function(){ jQuery('#ajax-container').fadeIn(500); });
    });
凯凯我们等你回来 2024-12-04 19:00:35

您可以发布您自己问题的答案

并且,您需要使用 live()Doc 悬停时,因为分页可能会加载到新的 portfolio-thumbs li 中。

如果没有 live(),这些新的 li 将不会附加任何事件(除非您重新调用 jQuery('ul.portfolio-thumbs li' ).hover 在每个分页事件之后)。
Live 更容易,并且避免了将同一事件侦听器的多个副本附加到元素的陷阱。

而且,是的,您可以在同一页面上使用两个 live() 调用(或多个),不会出现任何问题。

You can post answers to your own question.

And, you needed to use live()Doc on the hover, because the pagination presumably loads in new portfolio-thumbs lis.

Without the live(), these new lis would have no events attached to them (unless you re-called jQuery('ul.portfolio-thumbs li').hover after every pagination event).
Live is easier, and avoids the pitfall of having multiple copies of the same event-listener attached to an element.

And, yes, you can use both live() calls (or more) on the same page without problems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文