2014-11-20 45 views
-2

我已經搜索並提到了前面提出的問題,但可能是我太愚蠢瞭解這個問題:)。Jquery最近的 - 它是如何工作的

我指的是最接近的的jQuery實現,在閱讀它之後,我嘗試在一個非常簡單的虛擬示例中實現它。但不知何故,我無法獲得價值。下面是我使用

<div> 
<div class="firstChild">1234</div> 
<div class="parentDiv"> 
    <div class="firstChild">1234</div> 
    <div class="secondChild">Hello</div> 
    <div class="thridChild">Bye</div> 
</div> 
</div> 

的代碼,我使用它

$(document).ready(function(){ 
    var value = $(".parentDiv").closest(".firstChild").text(); 
    alert(value); 
}); 

jQuery代碼,但所有我得到的值是空白。 當我嘗試使用

var value = $(".parentDiv").closest("div").text(); 

我從所有三個孩子div的即(1234你好再見)作爲警報

價值如何使用最接近的選擇來獲得firstChild`的價值

+1

閱讀文檔。 .closest()遍歷DOM查看祖先元素。根據你的代碼,.parentDiv沒有祖先,除了身體。你可能想要.prev()。 – j08691 2014-11-20 16:26:59

+0

var value = $(「.parentDiv」).closest(「div」).find('。firstChild')。text(); – markpsmith 2014-11-20 16:34:04

+0

請參閱編輯。我爲.parentDiv添加了一個父級,但它仍然給我空白 – Vatsal 2014-11-20 16:39:40

回答

0

使用.prev()或。 parents()

var value = $(".parentDiv").parents("div").children(".firstChild").text(); 
 
console.log(value); 
 

 
var value = $(".parentDiv").prev(".firstChild").text(); 
 
console.log(value);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="firstChild">12345</div> 
 
    <div class="parentDiv"> 
 
    <div class="firstChild">1234</div> 
 
    <div class="secondChild">Hello</div> 
 
    <div class="thridChild">Bye</div> 
 
    </div> 
 
</div>

與您例如使用.closest()問題是,不像.parents().closest()將測試本身,然後去了DOM。所以.closest('div')將選擇不是你想要的parentDiv div。你總是可以使用.closest()並指定一個沒有class的div,但當兩個其他選擇器更合適時沒有意義。