使用jquery在单击元素之前的DOM中查找元素

时间:2011-02-11 10:40:27

标签: javascript jquery css-selectors

我需要做这样的事情:

<ul><li>something</li></ul>
<div class='elm'>click me</div>     <!-- no 1  -->
<ul><li>something</li></ul>
<div class='elm'>click me</div>     <!-- no 2  -->
<ul><li>something</li></ul>
<div class='elm'>click me</div>     <!-- no 3  -->
<ul><li>something</li></ul>
<div class='elm'>click me</div>     <!-- no 4  -->
<ul><li>something</li></ul>
<div class='elm'>click me</div>     <!-- no 5  -->

然后使用jquery

$(".elm").click(function(){
   //some selector which returns the ul element which is just before this div element.
});

我需要选择在点击的div元素之前的ul元素。

就像用户点击div(#4)那样它应该返回在div之前的ul元素(#4)。

3 个答案:

答案 0 :(得分:3)

像这样:

$("div.elm").click(function() {
    // Get the previous element IF it's a UL (nothing otherwise)
    var previous = $(this).prev("ul");
});

请参阅文档中的prev

Live example

如果你想扫描回到最近的兄弟ul,跳过中间不是ul的任何元素,你会做:< / p>

$("div.elm").click(function() {
    // Find a previous UL sibling, if any
    var previous = $(this).prevAll("ul:first");
});

Live example

答案 1 :(得分:1)

如果您为元素提供类而不是ID以使其有效,那么您可以使用prev

$(".elm").click(function(){
   var prev = $(this).prev();
});

注意: ID必须是唯一的。如果为多个元素分配相同的ID,则大多数操作仅在具有此ID的第一个元素上执行。

答案 2 :(得分:0)

你有一个巨大的错误(使用验证器,如果你不相信我:)))...你有多个具有相同id的div添加一个计数器或他们的东西。此外,如果您添加计数器,您可以毫无问题地选择它。

功能选择(id)

{

var x = document.getElementById('elm'+ id);

}

无论如何......如果你想在没有计数器的情况下使用onclick =“select(this.index)”