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

发布于 2024-10-30 00:17:34 字数 638 浏览 0 评论 0原文

我有一个 cookie 值:clickotV

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

当 cookie 值为 1 时:

  • 我必须通过 out.php 将所有 href 替换为类“t”,并添加目标 _blank 所以我这样做:

    $(文档).ready(函数(){
        if($.cookie('clickotV')==1){
            $("at").attr("href", "/out.php");
            $("at").attr("目标", "_blank");
        }
    });
  • 但是在用户单击替换的链接(out.php)后我必须替换链接源(没有_blank

我该怎么办?

I have a cookie value : clickotV

I have multiple href with the same class "t" :

  • <a href="link1.html" class="t">link1</a>
  • <a href="link2.html" class="t">link2</a>
  • <a href="link2.html" class="t"><img src="image2.jpg" /></a>

When cookie value is 1 :

  • I must replace all href with the class "t" by out.php and add target _blank
    So i do this :

    $(document).ready(function(){
        if($.cookie('clickotV')==1){
            $("a.t").attr("href", "/out.php");
            $("a.t").attr("target", "_blank");
        }
    });
  • But I must replace the link origin (without _blank) after user click on a replaced link (out.php)

How do I ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

看轻我的陪伴 2024-11-06 00:17:34

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

您将遇到的主要问题是在点击后更改href。您可以绑定单击事件,设置一个较短的超时以将值更改回来,并在默认操作后取消绑定单击事件。或者尝试用 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;
            });
        });
    }
});

If you need to remember data, then you will have to store it, fortunately, jQuery has the .data() command for this purpose.

The major problem you will have is getting the href to change after a click. You could either bind the click event, set a short timeout to change the value back and unbind the click event after the default action. Or try and open the page in javascript, but that is often blocked.

Edit: Altered to reset all links on first click.

$(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;
            });
        });
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文