2016-02-12 119 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