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

首先不确定是否是解决这种情况的正确方法,并且当有多个“ download_link”类的链接时是否会遇到问题,但即使现在也只有这样的链接中的一个,目标设置为undefined,看起来重定向器调用中的$(this)实际上指向整个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", "#");
    });

最佳答案

您正在从文档的$(this)回调范围访问ready,因此$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", "#");
  });
});

07-28 04:24