Jquery:根据cookie值替换所有链接,并在单击后替换真正的链接
我有一个cookie值:clickotV 我有多个同一类“t”的href: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
- 我必须用out.php将所有href替换为类“t”,并添加target
所以我这样做: $(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(“目标”,“空白”); } });李>\u blank
- 但在用户单击替换的链接(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奥列恩:根据您的要求进行修改。记住只使用两个块中的一个,而不是两个。