jQuery, как я могу найти li, в котором находится div? - PullRequest
1 голос
/ 22 августа 2011

Я пытаюсь

$(this).parent('li').attr('widgetid')

Потому что, когда я нажимаю в следующем макете, я хочу найти виджет

<li widgetid="1">
    <div class="widgetHeader">
        <div class="widgetIcon"></div>
        <div class="widgetTitle"></div>
        <div class="widgetEdit"></div>
        <div class="widgetClose"></div>
    </div>
    <div class="widgetHeader"></div>
</li>

но я получаю "undefined", поэтому я думаю, что потерял себя "widgetClose" - это триггер div для того, что я пытаюсь сделать.

Ответы [ 4 ]

4 голосов
/ 22 августа 2011

Вы можете использовать:

$(this).closest('li').attr('widgetid');

Ссылки:

1 голос
/ 22 августа 2011

Вместо использования родительского метода со селектором (который будет возвращать значение только в том случае, если непосредственный родительский элемент соответствует селектору), вы можете использовать метод родителей:

$ (this) .parents ("li: eq (0) "). attr (" widgetid ")

Метод parent просматривает все элементы-предки и возвращает все, что соответствует селектору (в этом случае селектор запрашивает первый li, если он найден)).

1 голос
/ 22 августа 2011

вы можете использовать .parents вместе с event.stopPropagation

$("div").click(function(e){
    e.stopPropagation();
alert($(this).parents('li').attr('widgetid'));

});

http://jsfiddle.net/FhVgp/3/

0 голосов
/ 22 августа 2011

В любом случае вы должны привязать только один прослушиватель события щелчка только для родительского элемента всех интерактивных элементов, а затем использовать event.target в функции click для ссылки на элемент, на который щелкнули.

Оттуда вы можете найтиближайший элемент <li> с использованием метода jQuery .closest().

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