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:根据cookie值替换所有链接,并在单击后替换真正的链接_Jquery_Cookies_Hyperlink_Click - Fatal编程技术网

Jquery:根据cookie值替换所有链接,并在单击后替换真正的链接

Jquery:根据cookie值替换所有链接,并在单击后替换真正的链接,jquery,cookies,hyperlink,click,Jquery,Cookies,Hyperlink,Click,我有一个cookie值:clickotV 我有多个同一类“t”的href: 当cookie值为1时: 我必须用out.php将所有href替换为类“t”,并添加target\u blank 所以我这样做: $(document).ready(function(){ if($.cookie('clickotV')==1){ $("a.t").attr("href", "/out.php"); $("a.t").attr("target", "_b

我有一个cookie值:clickotV

我有多个同一类“t”的href:

当cookie值为1时:

  • 我必须用out.php将所有href替换为类“t”,并添加target
    \u blank
    所以我这样做:

    $(document).ready(function(){ if($.cookie('clickotV')==1){ $("a.t").attr("href", "/out.php"); $("a.t").attr("target", "_blank"); } }); $(文档).ready(函数(){ 如果($.cookie('clickotV')==1){ $(“a.t”).attr(“href”,“out.php”); 美元(“a.t”).attr(“目标”,“空白”); } });
  • 但在用户单击替换的链接(out.php)后,我必须替换链接源(不带
    \u blank


我该怎么做?

如果您需要记住数据,那么您必须存储它,幸运的是,jQuery有用于此目的的
.data()
命令

您将遇到的主要问题是在单击后更改
href
。您可以绑定click事件,设置一个短超时以更改回值,并在默认操作后取消绑定click事件。或者尝试用javascript打开页面,但这通常会被阻止

编辑:更改为第一次单击时重置所有链接。

$(document).ready(function() {
    if ($.cookie('clickotV') == 1) {
        $('a.t').each(function() {
            var self = $(this);
            self.data('old-href', self.attr('href'))
                .attr({ 'href': '/out.php',
                        'target': '_blank' });

            // Timeout - option 1
            self.click(function() {
                setTimeout(function() {
                    $('a.t').each(function() {
                        $(this).attr('href', $(this).data('old-href')).unbind('click');
                    });
                }, 10);

                // passthrough for default action
                return true;
            });

            // JS new-window - option 2
            self.click(function() {
                var newWindow = window.open(self.attr('href'), '_blank');

                $('a.t').each(function() {
                    $(this).attr('href', $(this).data('old-href')).unbind('click');
                });

                newWindow.focus();
                return false;
            });
        });
    }
});

那么,你需要在点击后返回原始链接吗?一次所有链接还是一次一个?是的,我需要在单击确定后返回原始链接,我尝试了。但是self-click功能只在我点击的链接中起作用。因此,我需要在单击后,在所有与类“t”的链接上创建原始链接。@Piskorski Aurélien:我确实明确地问过你,你的回答是单数形式的。如果您需要更改所有调用,则需要将
中的
self
调用替换为
$('a.t')。每个()都调用。您好,谢谢!但是你能纠正你的代码吗,因为我是jquery的新手。谢谢你的帮助patience@Piskorski奥列恩:根据您的要求进行修改。记住只使用两个块中的一个,而不是两个。