2013-10-27 6 views
0

Я пытаюсь улучшить свое понимание прохождения и правильного использования $(this).

Я понимаю, что $(this) используется в контексте. Однако, скажем, у меня есть три элемента, которые идентичны друг другу (по HTML), и если пользователь нажимает на ввод, я хочу, чтобы события произошли не только для элемента, выбранного пользователем, но и для доступа к родительскому элементу ".item" также. Таким образом, я могу скрыть другие элементы в пределах ".item", потому что снова контекст будет "input", который пользователь нажал.

Здесь я смущен. Когда пользователь нажимает на вход ($('input').on('click', doSomething);), меня ограничивает контекст ввода - ничто не находится внутри входа, поэтому я хочу получить доступ к другим элементам, которые находятся вне входного контекста.

Затем я попытаюсь использовать $(this), чтобы сказать, что я хочу, чтобы это событие произошло только для ЭТОГО предмета, не затрагивая ВСЕ предметы.

Вот пример кода: JSFIDDLE

Я попытался исследовать это, и я не могу найти много информации на примере, как это так, мы надеемся, это могло бы принести пользу другим тоже. Не стесняйтесь вносить изменения в содержание/заголовок, поскольку я старался быть как можно более конкретным.

+4

[ 'parent'] (http://api.jquery.com/parent/) – kalley

+1

$ (это) .parent()? http://api.jquery.com/parent/ –

+3

* «Я пробовал исследовать это, и я не могу найти много информации о подобном экземпляре». Извините, но нет. Если вы потратите час (это все, что требуется), прочитав [документацию по API] (http://api.jquery.com), вы найдете нужную вам информацию. –

ответ

8

Чтобы получить непосредственный родитель (ы) элемента (ов) в наборе jQuery: parent. (Если ваш набор имеет только один элемент, так как $(this) будет, это даст вам непосредственный родитель этого элемента.)

Чтобы найти самый близкий элемент (ы) к элементам в наборе jQuery, соответствующем данному селектору, начиная с текущего элемента (ов): closest. (Если набор только один элемент, как $(this) воли, которая даст вам первый элемент, соответствующий селектор, начиная с этого одного элемента, то, глядя на своих родителей, то его родителя и т.д.)

1

Это должно быть ваш код щелкать-обработчик:

function doSomething(event) { 
    $(event.target).parent().find('ul').hide(); 
} 
Смежные вопросы