Как скрыть родительский элемент с помощью jquery? - PullRequest
8 голосов
/ 21 августа 2009

Предположим, следующий HTML:

<li class="fooli">
   <a class="foo" href="javascript:foo(this);">anchor</a>
</li>
<li class="fooli">
   <a class="foo" href="javascript:foo(this);">anchor</a>
</li>

и следующий Javascript (с использованием jquery 1.3.2):

function foo(anchor) {
  alert($(anchor).attr('href'));
}

Моя цель - скрыть клик по ли, но я не могу назначить им уникальные идентификаторы. Таким образом, я хочу сделать это позиционно (то есть идентифицировать конкретную ссылку, на которую нажали) с помощью чего-то вроде $ (anchor) .parent (). Hide ().

Однако приведенное выше предупреждение возвращает "undefined", поэтому для меня не очевидно, что у меня даже есть нужный объект jquery.

Как мне узнать, что такое объект $ (якорь)? В частности, как узнать, какие атрибуты у него есть, какой у него класс, какой это элемент HTML и т. Д.?

Ответы [ 2 ]

19 голосов
/ 21 августа 2009

Не можете ли вы сделать это:

$(function() {
  $("a.foo").click(function() {
    $(this).parent().hide();
    return false;
  });
});

с:

<li class="fooli"><a class="foo" href="#">anchor</a></li>
<li class="fooli"><a class="foo" href="#">anchor</a></li>
7 голосов
/ 21 августа 2009

$(...) в jQuery никогда не бывает единственным HTML-элементом; это всегда их список.

Вы можете использовать .get() для преобразования в обычный список Javascript или, что лучше, использовать .each():

$(anchor).each(function() { alert(this) });

Это даст вам что-то вроде [object HTMLAElement]. Вам нужно будет использовать for/in, чтобы полностью его изучить, но .tagName и .innerHTML, вероятно, достаточно хороши, чтобы выяснить, где вы находитесь.

Мне также нравится использовать $(...).css('outline', '1px solid lime') для поиска элементов. Их трудно не заметить и их легко определить с помощью Firebug.

Приложение: Я определенно согласен с приведенным выше ответом об отделении вашего Javascript от вашего HTML. Не вставляйте JS.

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