Javascript Can';t使用jQuery获取锚定标记的href值

Javascript Can';t使用jQuery获取锚定标记的href值,javascript,jquery,browser-extension,opera-extension,Javascript,Jquery,Browser Extension,Opera Extension,我试图使用jQuery获取锚定标记的href值,但是this关键字没有按预期工作 以下是控制台中代码的结果: 我遇到问题的代码部分: $('#container a').click(() => { console.log(this); let link = $(this).attr("href"); console.log("from jquery - " + link); //chrome.tabs.create({ url: link }); })

我试图使用jQuery获取锚定标记的
href
值,但是
this
关键字没有按预期工作

以下是控制台中代码的结果:


我遇到问题的代码部分:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});
$('#container a').click(function() { ... });
$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})
$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})
如您所见,
this
关键字指向
窗口
对象。
此代码是我试图为Opera构建的扩展的一部分。

这将为您提供href值

var href = $('a').attr('href');
这里有一个要测试的示例:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});
$('#container a').click(function() { ... });
$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})
$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})
$(文档).ready(函数(){
$(“a”)。单击(函数(事件){
var href=$(event.target).attr('href');//这将为您提供href值
警报(href);
event.preventDefault();
});
});

这将为您提供href值

var href = $('a').attr('href');
这里有一个要测试的示例:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});
$('#container a').click(function() { ... });
$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})
$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})
$(文档).ready(函数(){
$(“a”)。单击(函数(事件){
var href=$(event.target).attr('href');//这将为您提供href值
警报(href);
event.preventDefault();
});
});

您使用的是箭头函数
()=>{..}
而不是常规函数
函数(){…}
,这就是为什么您的
无法按预期工作的原因

因此,与此相反:

$('#container a').click(() => { ... });
使用以下命令:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});
$('#container a').click(function() { ... });
$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})
$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})
您的更新代码:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});
$('#container a').click(function() { ... });
$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})
$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})
或带有箭头功能:

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

有关箭头功能的更多信息:

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

您使用的是箭头函数
()=>{..}
而不是常规函数函数(){…},这就是为什么您的
无法按预期工作的原因

因此,与此相反:

$('#container a').click(() => { ... });
使用以下命令:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});
$('#container a').click(function() { ... });
$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})
$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})
您的更新代码:

$('#container a').click(() => {
    console.log(this);
    let link = $(this).attr("href");
    console.log("from jquery - " + link);
    //chrome.tabs.create({ url: link });
});
$('#container a').click(function() { ... });
$('#container a').click(function () {
    console.log(this);
    let link = $(this).attr('href');
    console.log(link);
})
$('container a').click(event => {
    let link = $(event.currentTarget).attr('href');
    console.log(link);
})
或带有箭头功能:

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

有关箭头功能的更多信息:

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

不要使用箭头函数(
()=>{}
)使用经典函数声明(
function(){}
)。箭头函数不会将此绑定到当前作用域

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

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

不要使用箭头函数(
()=>{}
)使用经典函数声明(
function(){}
)。箭头函数不会将此绑定到当前作用域

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

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

这可能会对您有所帮助。欢迎来到堆栈溢出。为了让人们更好地帮助你(以及帮助那些将来可能来到这里的人),你应该在这里添加你的相关代码,而不是发布一个带有代码的图片链接。这可能对你也有帮助。这可能对你有帮助。欢迎来到堆栈溢出。为了让人们更好地帮助你(以及帮助那些将来可能来到这里的人),你应该在这里添加你的相关代码,而不是发布一个带有代码的图片链接。这可能也会对你有所帮助。欢迎!哪个实现最适合您?使用函数语法的实现,我真的需要更多地了解lambda表达式,它的行为与我使用的toNice不同!我用一些有用的链接更新了我的答案,以帮助您完全掌握JavaScript中的箭头函数。玩得开心,继续做好工作!不客气!哪个实现最适合您?使用函数语法的实现,我真的需要更多地了解lambda表达式,它的行为与我使用的toNice不同!我用一些有用的链接更新了我的答案,以帮助您完全掌握JavaScript中的箭头函数。玩得开心,继续做好工作!问题是,当我使用箭头函数时,“this”关键字指向窗口对象,而不是触发事件的标记。我修复了它,感谢您的回答在页面中出现1个以上的a之前,这一切都很好。我的回答的重点是演示如何使用jquery获取attr值,因为这是问题的标题。我更新了答案,以获取事件中的元素。因此,即使有多个相同的元素,这也会起作用。问题是,当我使用箭头函数时,“this”关键字指向窗口对象,而不是触发事件的标记。我修复了它,感谢您的回答在页面中出现1个以上的a之前,这一切都很好。我的回答的重点是演示如何使用jquery获取attr值,因为这是问题的标题。我更新了答案,以获取事件中的元素。因此,即使同一元素有多个元素,这也会起作用