我试图重定向网页上的链接,在这个简单的示例中,它只是通过简单的检查来设置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", "#");
});
});