Использование $(this) селектора в jquery с другим вложенным селектором
Каков наилучший способ указать вложенный селектор при использовании $(this)
?
В этом примере:
$('.example').each(function() {
var url = $(this).attr('href');
});
url
вернется undefined
потому что это ожидало бы 'a'
селектор первым. В идеале я бы хотел сказать:
var url = $(this, 'a').attr('href');
но это не работает, следующее работает как задумано, но выглядит не очень аккуратно:
$('.example').each(function() {
var link = $(this).find('a');
var url = $(link).attr('href');
});
так как я могу использовать $(this)
а также 'a'
правильно ли?
примечание: я знаю, что следующее будет работать, но не для целей моего вопроса.
$('.example > a').each(function() {
var url = $(this).attr('href');
});
2 ответа
(Это должен быть комментарий, но мне нужно больше места для кода).
Когда ты сказал
это ожидало бы селектор 'a' сначала
что именно вы имеете в виду под "этим"? Там нет ничего, что "ожидает" чего-либо. Любой элемент (теоретически) может иметь href
приписывать.
Кроме того, как выглядит ваш HTML? Если это
<a class="example" href="#">...</a>
тогда работает только ваш первый пример, остальные нет. Ваши другие примеры все ожидают
<div class="example"><a href="#">...</a></div>
что в свою очередь не работает с первым примером.
в чем именно проблема?: Если $(this).attr("href")
возвращает неопределенное значение, тогда вы можете легко проверить это. Можете ли вы привести конкретный пример использования?