2014-11-20 48 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,但当两个其他选择器更合适时没有意义。