2016-02-12 118 views
1

我想要使用closest()來獲取隱藏輸入字段的值,但返回的是undefined。JQuery最接近()返回undefined

這是HTML模板:

<div class="content"> 
    <input type="hidden" value="ABC123" class="imgRef"> 

    <div class="input-group"> 
     <input type="text" class="form-control" id="Item1" placeholder="description" value="{{item1}}" name="Item1" required> 
     <span class="input-group-btn"> 
      <button class="btn btn-default btn-fill addField"> 
       <i class="fa fa-plus"></i> 
      </button> 
     </span> 
     </div> 
</div> 

我嘗試讀取隱藏的輸入類型,它返回未定義的值:

'click .addField':function(event){ 
     console.log($(event.currentTarget).closest('.imgRef').value); 
    } 
+1

你可以創建一個[小提琴](https://jsfiddle.net/)? – Draco18s

+1

那不會那樣工作。 '最接近'在DOM樹中上升(或者我相信)。從你點擊的地方往上走並不會得到你想要的輸入。你需要找到它的父母,而不是'.find('。imgRef')' – putvande

回答

6

.closest在DOM遍歷了。 .imgRef不是您點擊的對象的父母。您需要選擇該對象的父對象(該對象是您單擊的對象的父對象之一),而不是.find('.imgRef')

此外,正如@Daniel在他的回答中所說,您需要.val()而不是.value

所以:

console.log($(event.currentTarget).closest('.content').find('.imgRef').val()); 

Fiddle

+0

感謝您的提示。 – user94628

1

這裏是你爲了從您的按鈕相對路徑要做到這一點想要的東西,而無需添加標識。

 $('button').on('click', function(e) { 
 
     var el = $(e.currentTarget).closest('.content').find('.imgRef').val(); 
 
     alert(el); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="content"> 
 
    <input type="hidden" value="ABC123" class="imgRef"> 
 

 
    <div class="input-group"> 
 
    <input type="text" class="form-control" id="Item1" placeholder="description" value="" name="Item1" required> 
 

 
    <button class="btn btn-default btn-fill addField"> 
 
     BUTTON 
 
    </button> 
 

 
    </div> 
 
</div>

+0

糟糕。看起來有人在寫這篇文章時發佈了類似的內容。大聲笑 – MaxRocket