2014-11-08 70 views
1

我正在修改一个利用大型弹出窗口的Wordpress主题。尝试使用jquery为magnifica-popup设置data-mfp-src属性

我想使用空字符串替换锚标记中的URL,并使用URL填充data-mfp-src属性。这是为了防止中间点击在新标签中打开源图像,并隐藏状态栏中的URL(我知道它仍然可以在页面源中看到)。

我已经试过这样:

$('.photowall-item a').each(function(idx,link) { 
    $(this).attr('data-mfp-src', link); 
    $(this).attr('href', ''); 
}); 

我也试着设置使用$(this).attr('href'),而不是链接数据MFP-SRC。

加载页面时的结果是,href被替换为空字符串,data-mfp-src被创建,但也包含一个空字符串,而不是原始的href值。如果我为href分配一个不同的值,data-mfp-src将获得相同的值。这打破了弹出窗口。

如果我将硬编码值分配给data-mfp-src,例如。 $(this).attr('data-mfp-src', 'someurl')它可以工作,但显然无论您点击哪个缩略图,都会弹出相同的图像。同样奇怪的是,如果我在消隐href后立即执行alert($(this).attr('data-mfp-src')),则会返回data-mfp-src的正确值。但是当我在浏览器中查看生成的源代码时,价值已经消失。

+0

你在哪里以及如何设置idx和链接? – 2014-11-08 07:37:16

+0

如果你想防止中间点击在新选项卡中打开源图像,你只需返回false:$(this).on('click',function(){return false;});或$(this).on('click',function(e){e.preventDefault();}); – 2014-11-08 07:42:37

+0

idx包含当前锚元素的索引,链接包含href。这些会自动传入。 – 2014-11-08 07:43:49

回答

0

此代码插入到被调用的函数两次拍打额头

数据MFP-SRC和HREF被正确设定的第一次。第二次,分配给href的空字符串将覆盖data-mfp-src中分配的正确URL。

我通过定义一个数组来修复它,然后测试它是否为空。如果它是空的,我使用hrefs填充数组,然后继续。如果不是空的,我将先前分配的hrefs分配给data-mfp-src并清空hrefs。

工程就像一个魅力。