添加新类时,'覆盖透明图像'jQuery会中断

时间:2014-01-08 00:25:09

标签: javascript jquery

我发现这个脚本HERE将透明图像覆盖在我希望在我的网站上“保护”的照片上。在具有超链接的图像上,我希望能够为它们提供一个特殊的类并使它们可以访问。

这是原始剧本:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var pixelSource = 'http://static.squarespace.com/static/51c351f0e4b0c89ff2b61cb8/t/52cc3905e4b0167d33cd524e/1389115653884/Transparent.gif';
var useOnAllImages = true;
// Preload the pixel
var preload = new Image();
preload.src = pixelSource;
$('img').live('mouseenter touchstart', function(e) {
    // Only execute if this is not an overlay or skipped
   var img = $(this);
   if (img.hasClass('protectionOverlay')) return;
   if (!useOnAllImages && !img.hasClass('protectMe')) return;
   // Get the real image's position, add an overlay
   var pos = img.offset();
   var overlay = $('<img class="protectionOverlay" src="' + pixelSource + '" width="' + img.width() + '" height="' + img.height() + '" />').css({position: 'absolute', zIndex: 9999999, left: pos.left, top: pos.top}).appendTo('body').bind('mouseleave', function() {
       setTimeout(function(){ overlay.remove(); }, 0, $(this));
   });
   if ('ontouchstart' in window) $(document).one('touchend', function(){ setTimeout(function(){ overlay.remove(); }, 0, overlay); });
});
});
</script>

有人告诉我改变这一行:

$('img').live('mouseenter touchstart', function(e) {

对此:

$('img').not('.FreeMe').live('mouseenter touchstart', function(e) {

...并提供我想要点击的图片'.FreeMe'。

当我在没有更改的情况下运行脚本时,透明叠加层工作得很好。一旦我更改了该行代码并添加了特殊类,所有图像都可以再次访问,并且脚本不再有效。

HERE是我一直在处理的页面的链接。屏幕底部的摄影师信息是我想要添加超链接的图像。

为了完成这项工作,我一直在寻找高低,但无法找到问题的解决方案。我对Javascript和jQuery非常陌生,但是在CSS和HTML中已经足够了解它是危险的。

我感谢你们所提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您应该使用.on() method而不是.live(),因为.live()方法不能像其他jQuery方法一样链接(参数只是相同的)。


引用jQuery's doc on .live()

  

以后不再推荐使用.live()方法   jQuery的版本提供了更好的方法,没有它   缺点。特别是,使用时会出现以下问题   .live():

     

•不支持链接方法。例如,$(“a”)。find(   “.offsite,.external”)。live(...);是无效的,不起作用   如预期的那样。

另外,正如评论中所述,从jQuery 1.7开始,不推荐使用.live()方法。

你看到working demo with adorable kittens here.