Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery更改a HREF,只需单击鼠标左键即可_Jquery_Fancybox_Href - Fatal编程技术网

使用jQuery更改a HREF,只需单击鼠标左键即可

使用jQuery更改a HREF,只需单击鼠标左键即可,jquery,fancybox,href,Jquery,Fancybox,Href,我想用fancybox在iframe中打开一个站点,如果用户选择在新选项卡或窗口中打开指向该站点的链接,则需要提供不同的布局(完整布局) 正常链接会显示整个页面,但是如果我在末尾添加&type=77,我的CMS知道它应该提供适合iframe的精简版本。如果用鼠标左键单击链接,则以下代码会附加“&type=77” $('#mylink').mousedown(function(event) { if(event.which == 1) { var actua

我想用fancybox在iframe中打开一个站点,如果用户选择在新选项卡或窗口中打开指向该站点的链接,则需要提供不同的布局(完整布局)

正常链接会显示整个页面,但是如果我在末尾添加&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来更改url,而不是更改url-这部分起作用,它提供了正确的url,但破坏了fancybox。fancybox开始加载,但随后被重定向到新页面


也许有更好的方法。提前谢谢

我希望这能解决问题:

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);
            }
        });

我希望这能解决问题:

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);
            }
        });
使用
.one
方法:

更新 当您将插件分配给对象时,Fancy box可以接受要打开的href,因此请执行以下操作:

$("#mylink").each(function(){
     var $this = $(this);
     $this.fancybox({"href": $this.attr("href")+"&type=77"});
});
(有些人可能知道比/不喜欢对单个元素使用
每个
更好的方法,但我认为对单个调用来说这并不重要)

使用
。一个
方法:

更新 当您将插件分配给对象时,Fancy box可以接受要打开的href,因此请执行以下操作:

$("#mylink").each(function(){
     var $this = $(this);
     $this.fancybox({"href": $this.attr("href")+"&type=77"});
});
(有些人可能知道比/不喜欢对单个元素使用
每个
更好的方法,但我认为一次调用并不重要)

只执行一次事件

从元素中删除事件处理程序

您可能还想了解有关鼠标事件的更多信息:

只执行一次事件

从元素中删除事件处理程序

您可能还想了解有关鼠标事件的更多信息:



我不知道唯一的方法,但在这种情况下,它似乎没有多大帮助。-它添加了部分,但添加的部分保留了下来,因此对于下一个“在新选项卡中打开”来说,该部分仍然存在,而且不应该存在。啊,好吧,我现在知道你需要什么了,对不起,我略过了这个问题(坏习惯!),我认为你最好在fancybox激活代码中进行操作,在那里添加类型,而不是更改物理href,你挂接fancybox的代码是什么?我需要更改href以让我的CMS知道,它应该为该页面提供另一种布局。我只是像这样激活fancybox$(“#mylink”).fancybox();谢谢你,Psy,它工作得很好。我认为这是解决这个问题的方法。我不知道唯一的方法,但在这种情况下,它似乎没有多大帮助它添加了部分,但添加的部分保留了下来,因此对于下一个“在新选项卡中打开”来说,该部分仍然存在,而且不应该存在。啊,好吧,我现在知道你需要什么了,对不起,我略过了这个问题(坏习惯!),我认为你最好在fancybox激活代码中进行操作,在那里添加类型,而不是更改物理href,你挂接fancybox的代码是什么?我需要更改href以让我的CMS知道,它应该为该页面提供另一种布局。我只是像这样激活fancybox$(“#mylink”).fancybox();谢谢你,Psy,它工作得很好。我认为这就是这个问题的解决方案。和Psytronics的答案一样。这只解决了“&type=77”不再被添加多次的问题。您可以发送链接吗。我发现很难想象问题出在哪里,我恐怕无法提供链接。简言之,问题是:我有一个地址的链接,其结尾类似于“index.php?id=59”,只有在这种情况下,当有人用普通的鼠标左键点击它时,该链接应该被更改并指向“index.php?id=59&type=77”-但应该保持源代码中的状态。我非常感谢您的努力,但我认为这不是一个可用的解决方案。我测试了它,不知怎么的它有问题,我不太明白为什么,但它不能可靠地工作我不确定Psytronics的新解决方案是否是写得很好的代码,只是因为我对JS不是很精通,但它似乎可以完成这项工作。无论如何谢谢你!我认为Psytronic的建议是,您最好在此处使用一个函数设置href,一旦打开fancybox,然后从中删除与Psytronics答案相同的参数。这只解决了“&type=77”不再被添加多次的问题。您可以发送链接吗。我发现很难想象问题出在哪里,我恐怕无法提供链接。简言之,问题是:我有一个地址的链接,其结尾类似于“index.php?id=59”,只有在这种情况下,当有人用普通的鼠标左键点击它时,该链接应该被更改并指向“index.php?id=59&type=77”-但应该保持源代码中的状态。我非常感谢您的努力,但我认为这不是一个可用的解决方案。我测试了它,不知怎么的它有问题,我不太明白为什么,但它不能可靠地工作我不确定Psytronics的新解决方案是否是写得很好的代码,只是因为我对JS不是很精通,但它似乎可以完成这项工作。无论如何谢谢你!我认为Psytronic的建议是,最好从这里用一个函数设置href,一旦打开fancybox,然后从那里删除参数