jQuery点击叠加效果

发布于 2024-12-11 08:53:53 字数 1366 浏览 3 评论 0原文

我正在尝试使用 StackOverflow 上发现的 jQuery 效果( jQuery 图像悬停颜色叠加 ) 在我的 HTML 模板中的列表中。效果有效,但不幸的是,该链接不再点击进入下一页。

HTML 标记是...

<ul class="rollover-effect">
    <li><a href="page.html"><img src="image.jpg" alt="Image Title" /></a></li>
    <li><a href="page.html"><img src="image.jpg" alt="Image Title" /></a></li>      
    <li><a href="page.html"><img src="image.jpg" alt="Image Title" /></a></li>
</ul>

...我的 jQuery 读取...

jQuery('ul.rollover-effect a').bind('mouseover', function(){
    jQuery(this).parent('li').css({position:'relative'});
    var img = jQuery(this).children('img');
    jQuery('<div />').text(' ').css({
        'height': img.height(),
        'width': img.width(),
        'background-color': 'black',
        'position': 'absolute',
        'top': 0,
        'left': 0,
        'opacity': 0.0,
        'cursor': 'pointer'
    }).bind('mouseout', function(){
        jQuery(this).fadeOut(200, function(){
            jQuery(this).remove();
        });
    }).insertAfter(this).animate({
        'opacity': 0.40
    }, 200);
});

任何人都可以看到或知道为什么会这样吗?我希望能够点击进入下一页。烦死我了!谢谢。

I'm trying to use a jQuery effect as spotted here on StackOverflow ( jQuery image hover color overlay ) on a list in my HTML template. The effect works, but unfortunately the link no longer clicks through to the next page.

The HTML Markup is...

<ul class="rollover-effect">
    <li><a href="page.html"><img src="image.jpg" alt="Image Title" /></a></li>
    <li><a href="page.html"><img src="image.jpg" alt="Image Title" /></a></li>      
    <li><a href="page.html"><img src="image.jpg" alt="Image Title" /></a></li>
</ul>

...and my jQuery reads...

jQuery('ul.rollover-effect a').bind('mouseover', function(){
    jQuery(this).parent('li').css({position:'relative'});
    var img = jQuery(this).children('img');
    jQuery('<div />').text(' ').css({
        'height': img.height(),
        'width': img.width(),
        'background-color': 'black',
        'position': 'absolute',
        'top': 0,
        'left': 0,
        'opacity': 0.0,
        'cursor': 'pointer'
    }).bind('mouseout', function(){
        jQuery(this).fadeOut(200, function(){
            jQuery(this).remove();
        });
    }).insertAfter(this).animate({
        'opacity': 0.40
    }, 200);
});

Can anybody see or do they know why this might be? I want to be able to click through to the next page. It's bugging me! Thanks.

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

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

发布评论

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

评论(2

将军与妓 2024-12-18 08:53:53

据我可以在没有任何测试的情况下快速判断,点击事件被您的覆盖层捕获,并且不会冒泡到链接元素,因为覆盖层不是链接的子元素。

作为补偿,您可以将单击处理程序绑定到覆盖层,从而触发链接上的单击事件。

jQuery('ul.rollover-effect a').bind('mouseover', function(){
  var $this = jQuery(this);
  $this.parent('li').css({position:'relative'});
  var img = $this.children('img');
  jQuery('<div />').text(' ').css({
      'height': img.height(),
      'width': img.width(),
      'background-color': 'black',
      'position': 'absolute',
      'top': 0,
      'left': 0,
      'opacity': 0.0,
      'cursor': 'pointer'
  }).bind('mouseout', function(){
      jQuery(this).fadeOut(200, function(){
          jQuery(this).remove();
      });
  }).bind('click', function(){
      $this.click();
  }).insertAfter(this).animate({
      'opacity': 0.40
  }, 200);
});

So far as I can tell quickly without any testing, the click events are being captured by your overlay, and not bubbled up to the link element because the overlay is not a child of the link.

To compensate, you could bind a click handler to the overlay which triggers a click event on the link.

jQuery('ul.rollover-effect a').bind('mouseover', function(){
  var $this = jQuery(this);
  $this.parent('li').css({position:'relative'});
  var img = $this.children('img');
  jQuery('<div />').text(' ').css({
      'height': img.height(),
      'width': img.width(),
      'background-color': 'black',
      'position': 'absolute',
      'top': 0,
      'left': 0,
      'opacity': 0.0,
      'cursor': 'pointer'
  }).bind('mouseout', function(){
      jQuery(this).fadeOut(200, function(){
          jQuery(this).remove();
      });
  }).bind('click', function(){
      $this.click();
  }).insertAfter(this).animate({
      'opacity': 0.40
  }, 200);
});
眼眸里的快感 2024-12-18 08:53:53

您的代码对我来说工作正常(在 firefoxie8 上测试)。

我很怀疑,因为您已指向三个超链接的同一页面。这可能会让您感到困惑,因为它没有重定向到下一页。

更改三个链接的超链接文件名并再次测试它。

Your code is working fine for me (Tested on firefox & ie8).

Am doubted, since you have pointed to same page for three hyperlinks. This might you confused to see that it is not redirecting to next page.

Change the hyperlink filename for three links and test it, once again.

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