我发现这个脚本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中已经足够了解它是危险的。
我感谢你们所提供的任何帮助。
答案 0 :(得分:0)
您应该使用.on()
method而不是.live()
,因为.live()
方法不能像其他jQuery方法一样链接(参数只是相同的)。
以后不再推荐使用.live()方法 jQuery的版本提供了更好的方法,没有它 缺点。特别是,使用时会出现以下问题 .live():
•不支持链接方法。例如,$(“a”)。find( “.offsite,.external”)。live(...);是无效的,不起作用 如预期的那样。
另外,正如评论中所述,从jQuery 1.7开始,不推荐使用.live()方法。