2014-04-02 74 views
0
给出以下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> 

即时通讯试图找到最接近输入的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")); 
}); 

,他们都返回 '未定义' ..

有什么不对?

回答

3

.closest()用于查找祖先元素,在你的情况下,输入元素不是span.suggestInput元素的祖先元素,它的前一个同级所以使用.prev()找到它

var test1 = $(this).prev("input").attr("name"); 
+0

yeap!它做到了。 – Marco

1

您可以使用.prev()这里,因为input是你的跨度最接近的前兄弟:

var test1 = $(this).prev().attr("name"); 

.closest()不能正常工作,因为这种方法会遍历建立DOM树并获得最适合您的情况的最匹配的祖先:

+0

我没有注意到我需要输入SO验证,因为我正在同时回答另一个问题。 – Felix

相关问题