2014-04-02 124 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

相關問題