我想在iframe中使用fancybox打开一个站点,如果用户选择在新选项卡或窗口中打开指向该站点的链接,则需要提供不同的布局(完整布局)。
普通链接会显示整页,但如果我在最后添加& type = 77,我的CMS就知道它应该提供适合iframe的精简版本。如果使用鼠标左键单击链接,以下代码将附加“& type = 77”。
$('#mylink').mousedown(function(event) {
if(event.which == 1) {
var actualHref = $(this).attr("href");
$(this).attr("href", actualHref + "&type=77");
}
});
这很好用,但它会为每次点击附加部分。所以,如果我左键单击并关闭fancybox并在之后右键单击(在新选项卡中打开),那么我仍然最终得到带有附加部分的新URL。并且它还为每次点击附加该部分。
我尝试将window.location用于更改的网址而不是更改网址 - 部分工作,它提出了正确的网址,但它打破了fancybox。 fancybox开始加载,但后来被重定向到新页面。
也许有更好的方法。提前致谢。
答案 0 :(得分:3)
使用 .one
方法:
$('#mylink').one("mousedown", function(event) {
if(event.which == 1) {
var actualHref = $(this).attr("href");
$(this).attr("href", actualHref + "&type=77");
}
});
<强>更新强> 将插件分配给对象时,Fancy box可以接受打开href,所以执行以下操作:
$("#mylink").each(function(){
var $this = $(this);
$this.fancybox({"href": $this.attr("href")+"&type=77"});
});
(对于单个元素,有些人可能比使用each
知道更好/不喜欢,但我不认为这对单个调用真的很重要)
答案 1 :(得分:1)
我希望这可以解决这个问题:
var myLink = $('#mylink');
var actualHref = myLink.attr("href");
myLink.one("mousedown", function (event) {
if (event.which == 1) {
$(this).attr("href", actualHref + "&type=77");
}
});
myLink.one("mouseleave", function (event) {
if (event.which == 1) {
$(this).attr("href", actualHref);
}
});
答案 2 :(得分:0)