【问题标题】:Setting a cookie based on the name of the link that is clicked根据点击的链接名称设置 cookie
【发布时间】:2010-05-03 06:22:50
【问题描述】:

TLDR点击链接时,我想分配一个cookie,其名称为仪器名称和点击链接上的文本值。

使用 Jquery.1.4.2.min.js、Jquery.cookie.1.0.js


我正在尝试在单击链接时创建一个 cookie(将始终链接到“page.html”)。

乐器名称

文本的值

到目前为止,我正在尝试使用:

<script type="text/javascript" src="scripts/jquery-1.4.2-min.js"></script> 
<script type="text/javascript" src="scripts/jquery.cookie-1.0.js"></script>  

链接1:

<a href="page.html">link1</a>

链接2:

<a href="page.html">link2</a>

脚本:

$('a[href=page.html]').click(function()
{
var name = 'instrument';
var value = $(this).text();
$.cookie(name, value, { expires: 365 });
});

当我点击链接时,它只是加载链接并且没有设置 cookie。 使用 firebug、firecookie、firequery 进行调试。没有找到仪器的 cookie 或任何类似的东西。 Onload我会打的

&lt;a href="page.html"&gt;projects&lt;/a&gt;”但不是

$.cookie(name, value, { expires: 365 });”。

即使使用以下内容:(感谢Sarfraz

$('a[href="page.html"]').click(function(e)
{
 // prevent default action
 e.preventDefault();
 var name = 'instrument';
 // get link text
 var value = $(this).text();
 // set cookie
 $.cookie(name, value, { expires: 365 });
 // now go to link's location
 document.location.href = $(this).attr('href');
});

仍然不会创建 cookie。

如果我在$.cookie~ 上添加断点,即使单击其中一个链接也不会命中 断点也不是document.location.href~.

对于扎克:

预渲染 - &lt;script type="text/javascript" src="http://localhost/tree"&gt;&lt;/script&gt;

渲染后 -

"<div class="dtree">
<div class="dTreeNode"><img alt="" src="Images/base.png" id="id0"><a onclick="javascript: d.s(0);" href="home" class="node" id="sd0">Home</a></div>"

【问题讨论】:

  • 我想你想这样设置值:var value = $(this).text();
  • 我会说你可能是对的,但仍然没有创建 cookie。

标签: javascript jquery cookies


【解决方案1】:

这有点骇人听闻,但它对我有用。

$(document).ready( function() {
    $('a.cookier').each( function() {
        // Kill the link's link feature.
        _href = $(this).attr('href');
        $(this).attr("rel", _href).attr("href", "javascript:void(0);");
    });
    $('a.cookier').click(function() {
        var name = 'instrument';
        var value = $(this).text();
        $.cookie(name, value, { expires: 365 });
        // Go places
        document.location.href = $(this).attr('rel');
    });
});

我的标记如下所示:

<a class="cookier" href="hrrrngh.html">Shazam!</a>

我使用类似的方法“取消链接”我在使用 AJAX 但必须优雅降级的页面上的链接。

注意:您可能希望选择比“cookier”更经典的类。

编辑:

您可以选择其中的&lt;a&gt; 与其中的任何一个,选择选择页面上的其他内容。

.dtree img + a
.dTreeNode > a
.dTreeNode a.node
.dTreeNode a[onclick=|javascript].node

【讨论】:

  • 这是我可能遇到的问题,即我的链接是自动生成的,因此无法分配类。好的,当我将其包装在自己的
  • 好吧,如果它们都指向同一个 URL,那么您可以在其中使用属性选择器,就像我的类选择器一样容易。或者可能是一个上下文选择器,如#description &gt; a。如果您向我展示该页面的标记,我可以尝试为您制作一个。
  • 可惜他们不在同一个网址。它们是来自服务器端应用程序的不同 java 脚本库的一部分。无论如何,我使用您的答案找到了一种解决方案,将其发布在下面很乱,但它确实有效。 :P
  • 上下文选择器应该仍然可行,你能告诉我&lt;a&gt;出现在页面上的哪个位置吗?
  • 预渲染 -
    " 会加在上面。
【解决方案2】:
var value = $(this);

将 jQuery 对象赋值给值。使用

var value = $(this).text();

var value = $(this).attr('href');

【讨论】:

  • 感谢您的快速响应,但尝试过仍然无法正常工作:P
【解决方案3】:

试试这个:

$('a[href="page.html"]').click(function(e)
{
 // prevent default action
 e.preventDefault();
 var name = 'instrument';
 // get link text
 var value = $(this).text();
 // set cookie
 $.cookie(name, value, { expires: 365 });
 // now go to link's location
 document.location.href = $(this).attr('href');
});

【讨论】:

  • 没有运气,要么cookie仍然没有被创建:S。我不知道为什么?
  • @Ozaki:你的页面中包含 cookie 插件了吗? plugins.jquery.com/project/Cookie
  • 是的。我已经检查了大约一百万次,因为这就是我一直在想的,但它肯定存在!
  • @Ozaki:确保您已经包含了 jquery 文件,然后是 cookie 插件。
  • 是的,请查看直接从我的页面复制和粘贴的已编辑问题,并且两个链接都正确执行。
【解决方案4】:

使用上面 Zack 的答案,我更改了元素标签。 唯一的问题是它会为跟随的任何链接设置 cookie,无论它是否是我想要的链接,但它会设置 cookie 并在需要的地方工作。 如果有更清洁的方法,将不胜感激。

$(document).ready( function() {
    $('a[href="page.html"]').each( function() {
        // Kill the link's link feature.
        _href = $(this).attr('href');
        $(this).attr("rel", _href).attr("href", "javascript:void(0);");
    });
    $('a').click(function() {
        var name = 'instrument';
        var value = $(this).text();
        $.cookie(name, value, { expires: 365 });
        // Go places
        document.location.href = $(this).attr('rel');
    });
});

非常感谢 Sarfraz 和 Zack 的所有帮助,至少我现在有一些东西可以使用 ^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 2011-05-09
    • 2022-01-17
    • 2018-04-16
    • 2015-05-20
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多