учитывая следующий html:
<input name="name goes here" type="text" value="value goes here">
<span class="suggestInput" data-type="tag">
<img src="../images/icons/wand.png" title="Suggest an input" alt="">
</span>
im, пытаясь найти значение атрибута name для самого близкого входа, которое находится выше класса 'suggestInput' выше. В моем примере он должен возвращать имя здесь
Я пробовал:
$(".suggestInput").click(function(event) {
event.preventDefault();
var test1 = $(this).closest("input").attr("name");
var test2 = console.log($(this).find().closest("input").attr("name"));
});
и они оба возвращаются "неопределенными".
Что не так?
.closest() используется для поиска элемента-предка, в вашем случае элемент ввода не является элементом-предком элемента span.suggestInput
, это предыдущий брат, поэтому используйте .prev(), чтобы найти его
var test1 = $(this).prev("input").attr("name");
Вы можете использовать .prev()
здесь, потому что input
является непосредственным предыдущим родственником вашего диапазона:
var test1 = $(this).prev().attr("name");
.closest()
не работает, потому что этот метод будет пересекать дерево DOM и получить ближайший сопоставимый предк, который не применим в вашем случае: