将网页上的链接重定向到javascript函数

将网页上的链接重定向到javascript函数,javascript,jquery,Javascript,Jquery,我试图重定向网页上的链接,在这个简单的例子中,它只是通过一个简单的检查来设置cookie 首先,我不确定这是否是解决这种情况的正确方法,如果我在“download_link”类中有多个链接时遇到问题,但即使现在,只有一个这样的链接,目标设置为undefined,看起来像$(这个)在调用重定向器时,实际上是指向整个HTML文档,而不仅仅是我试图更改的元素 function redirect_link(e, destination) { if ($.cookie("conta

我试图重定向网页上的链接,在这个简单的例子中,它只是通过一个简单的检查来设置cookie

首先,我不确定这是否是解决这种情况的正确方法,如果我在“download_link”类中有多个链接时遇到问题,但即使现在,只有一个这样的链接,目标设置为undefined,看起来像$(这个)在调用重定向器时,实际上是指向整个HTML文档,而不仅仅是我试图更改的元素

    function redirect_link(e, destination) {
        if ($.cookie("contact_set") == "true") {
            window.location.href = destination;
        } else {
            alert("cookie not set");
        }
    }
    function redirector(destination) {
        alert("creating redirector to "+destination);
        return function(e) {redirect_link(e, destination)};
    }
    $(document).ready(function() {
        $('.download_link').click(redirector($(this).attr("href")));
        $('.download_link').attr("href", "#");
    });
您正在从文档的
ready
回调范围访问
$(this)
,因此
$this
指向
HTMLDocument
对象

$(document).ready(function() {
    var $downloadLnk = $('.download_link');
    $downloadLnk.click(redirector($downloadLnk.attr("href")));
    $downloadLnk.attr("href", "#");
});
按照您在评论中的要求:

$(document).ready(function() {
  $('.download_link').each(function() {
    var $lnk = $(this);
    $lnk.click(redirector($lnk.attr("href")));
    $lnk.attr("href", "#");
  });
});
您正在从文档的
ready
回调范围访问
$(this)
,因此
$this
指向
HTMLDocument
对象

$(document).ready(function() {
    var $downloadLnk = $('.download_link');
    $downloadLnk.click(redirector($downloadLnk.attr("href")));
    $downloadLnk.attr("href", "#");
});
按照您在评论中的要求:

$(document).ready(function() {
  $('.download_link').each(function() {
    var $lnk = $(this);
    $lnk.click(redirector($lnk.attr("href")));
    $lnk.attr("href", "#");
  });
});

$(function(){/
$(function(){/您始终可以使用目标:

$(document).ready(function() {
    $('.download_link').on('click', redirector); //bind to function
    $('.download_link').attr("href", "#");
});​

function redirector(event) {
    alert("creating redirector to "+event.target.href); //event.target
    return function(e) {redirect_link(e, destination)};
}

但是,当单击链接时,无论您使用什么,href都将是
,因为您在单击处理程序后的下一行将其设置为该值?

您始终可以使用目标:

$(document).ready(function() {
    $('.download_link').on('click', redirector); //bind to function
    $('.download_link').attr("href", "#");
});​

function redirector(event) {
    alert("creating redirector to "+event.target.href); //event.target
    return function(e) {redirect_link(e, destination)};
}

但是,当单击链接时,无论您使用什么,href都将是
#
,因为您在单击处理程序后的下一行将其设置为该值?

这似乎目前运行良好,而我只有一个这样的链接……如何处理更多链接?如果您可以使用选择器识别每个链接,您可以使用jQuery的
每个
函数。这似乎目前运行良好,而我只有一个这样的链接……我该如何处理更多链接?如果您可以使用选择器识别每个链接,您可以使用jQuery的
每个
函数。href不是已经重置为“#”当它进入重定向器时?是的,它会这样做,但无论如何它都会这样做!它警告正确值的唯一原因是因为函数未绑定到处理程序中,它会立即执行,因为它在
单击
中绑定了paradensis,所以我没有真正理解您要做的事情?尝试重新执行吗在href中移动目标,并用onClick处理程序替换它,该处理程序可以执行其他操作,并最终重定向到用户试图获取的内容……href不是已经重置为“#”了吗当它进入重定向器时?是的,它会这样做,但无论如何它都会这样做!它警告正确值的唯一原因是因为函数未绑定到处理程序中,它会立即执行,因为它在
单击
中绑定了paradensis,所以我没有真正理解您要做的事情?尝试重新执行吗在href中移动目标,并用onClick处理程序替换它,该处理程序可以执行其他操作,并最终重定向到用户试图获取的内容。。。