Не удается получить значение href для тега привязки с помощью jQuery - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь получить значение href тега привязки с помощью jQuery, но ключевое слово this не работает должным образом.

source code

Вот результат кода в консоли:

devtools console


Часть кода, с которой у меня проблема:

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

Как видите, ключевое слово this указывает на объект window. Этот код является частью расширения, которое я пытаюсь построить для Opera.

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Вы используете функцию стрелки () => {..} вместо обычной функции function () {...}, поэтому ваша this не работает так, как вы ожидали.

Итак, вместо этого:

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

Используйте это:

$('#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);
})

Подробнее о функциях стрелок:

0 голосов
/ 28 июня 2018

Не используйте функцию стрелки (() => {}), используйте классическое объявление функции (function() {}). Функции стрелок не привязывают this к текущей области.

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

Подробнее о функциях стрелок можно узнать здесь .

0 голосов
/ 28 июня 2018

Это даст вам значение 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>
...