2010-11-13 2 views
1

У меня есть эта структура:JQuery - следующий (элемент) не работает

<ul> 
    <li> 
    <a> link .. </a> 
    <span> text </span> 
    <ul> 
     ... 
    </ul> 
    </li> 
    ... 

Я добавляю событие щелчка на обоих <span> и <a> элементов, и я пытаюсь выбрать вложенный <ul> с помощью $(this).next("ul");

Он работает для пролета, но не для связи. Что я здесь делаю неправильно?

ответ

2

Обработчик нажмите на якорь не будет видеть UL, если вы используете next, чтобы захватить его, так как next будет только выбрать очень следующий родственный. Вы можете попробовать:

$("a").nextAll("ul").hide(); 

или:

$("a").parent().find("ul").hide(); 

или:

$("a").siblings("ul").hide(); 
+0

nextAll() работает для меня, спасибо. Но странно, что next() принимает аргументы, если он все равно возвращает самый следующий элемент. – Alex

+0

@Alex - аргумент, который он принимает, означает «вернуть * очень следующий» элемент *, только если * он соответствует переданному селектору. Это крайне неинтуитивно, и этот вопрос вызывается сотни раз в разных воплощениях по той же самой причине. – karim79

+0

ах я вижу сейчас. спасибо :) – Alex

Смежные вопросы