найти элемент в DOM, который находится непосредственно перед щелкающим элементом, используя jquery - PullRequest
0 голосов
/ 11 февраля 2011

Мне нужно сделать что-то вроде этого:

<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.
});

Мне нужно выбрать элемент ul, который находится непосредственно перед элементом div, по которому щелкают.

Например, если пользователь нажимает на div (# 4), он должен вернуть элемент ul, который находится перед div (# 4).

Ответы [ 3 ]

3 голосов
/ 11 февраля 2011

Как это:

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

См. prev в документации.

Живой пример

Если вы хотите отсканировать назад к ближайшему предыдущему брату ul, пропустив любые промежуточные элементы, которые не являются ul с, вы должны сделать:

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

Живой пример

1 голос
/ 11 февраля 2011

Если вы даете своим элементам класс вместо идентификатора, чтобы он работал, то вы можете использовать prev:

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

Примечание: Идентификаторы должны быть уникальными .Если вы назначите один и тот же идентификатор более чем одному элементу, большинство операций будут выполняться только с первым элементом с этим идентификатором.

0 голосов
/ 11 февраля 2011

У вас там огромная ошибка (используйте валидатор, если вы мне не верите :))) ... у вас более одного div с одним и тем же идентификатором, добавьте к ним счетчик или что-то в этом роде Также, если вы добавите счетчик, вы можете выбрать его без проблем.

функция выбора (id)

{

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

}

В любом случае ... если вы хотите сделать это без счетчика, используйте что-то вроде onclick = "select (this.index)"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...