无法获取具有 jQuery 的锚标记的 href 值

Can't get the href value of an anchor tag with jQuery

我正在尝试使用 jQuery 获取锚标记的 href 值,但 this 关键字没有按预期工作。

控制台中代码的结果如下:


我遇到问题的部分代码:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});

如您所见,this 关键字指向 window 对象。 此代码是我尝试为 Opera 构建的扩展的一部分。

这会给你 href 值

var href = $('a').attr('href');

这里有一个要测试的示例:

$(document).ready(function() {
  $("a").click(function(event) {
    var href = $(event.target).attr('href'); //this will give you the href value
    alert(href);
    event.preventDefault();
  });
});
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<a href="I'm the href value">this is a test link, click me</a>

您使用的是箭头函数 () => {..} 而不是常规函数 function () {...},这就是为什么您的 this 无法正常工作你已经料到了。

所以不是这个:

$('#container a').click(() => { ... });

使用这个:

$('#container a').click(function() { ... });

您的更新代码:

$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})

OR 用箭头函数:

$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})

关于箭头函数的更多信息:

不要使用箭头函数 (() => {}) 使用经典函数声明 (function() {})。箭头函数不绑定 this 到当前范围。

$("#container a").click(function(){
    console.log(this);
    let link = $(this).attr("href");
    console.log(link);
})

您可以了解有关箭头函数的更多信息here