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

时间:2011-04-02 12:47:02

标签: jquery cookies hyperlink click

我有一个cookie值:clickotV

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

  • <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>

当cookie值为1时:

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

    $(document).ready(function(){
        if($.cookie('clickotV')==1){
            $("a.t").attr("href", "/out.php");
            $("a.t").attr("target", "_blank");
        }
    });
  • 但是我必须在用户点击替换后的链接(out.php)后替换链接原点(不含_blank

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果你需要记住数据,那么你必须存储它,幸运的是,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;
            });
        });
    }
});