根据单击的链接名称设置cookie

时间:2010-05-03 06:22:50

标签: javascript jquery cookies

TLDR 点击链接时,我想指定一个名为instrument的cookie,并点击链接上的文本值。

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


我想在点击链接时创建一个cookie(将始终链接到“page.html”)。

乐器名称

TEXT的值

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

<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我会点击

<a href="page.html">projects</a>”但不是

$.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~.

对于扎克:

预渲染 - <script type="text/javascript" src="http://localhost/tree"></script>

渲染后 -

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

4 个答案:

答案 0 :(得分:2)

这是hackish,但它对我有用。

$(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”更高级的分类。

编辑:

您可以选择其中任何一个<a>,选择选择页面上的其他内容。

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

答案 1 :(得分:1)

var value = $(this);

将jQuery对象赋值给value。使用

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

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

答案 2 :(得分:0)

试试这个:

$('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');
});

答案 3 :(得分:0)

使用上面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提供的所有帮助,至少我现在有一些有用的东西^^