Как добавить класс только к верхнему элементу триггера с помощью Jquery? - PullRequest
0 голосов
/ 12 марта 2010

Я работаю над аккордеонной музыкой Jquery. Я хочу добавить класс в div, который содержит тег аккордеонного триггера . Вы можете посмотреть на мой код. Я хочу добавить «первое» имя класса к первому классу «newsitems» при нажатии на заголовок «Мода на рецессию в Японии».

        <!-- news items starts-->
        <div class="newsitems">
          <h3 class="business"> <a href="#" title="expand"><img src="images/expand_icon.gif" alt="collapse" class="collpase" /> Recession fashion in Japan Video</a> </h3>
          <p class="timestamp">0100hrs</p>
        </div>
        <!-- news items ends-->
        <!-- news items starts-->
        <div class="newsitems">
          <h3 class="sports"> <a href="#" title="expand"><img src="images/expand_icon.gif" alt="collapse" class="collpase" /> Murray survives five-set thriller at Wimbledon</a> </h3>
          <p class="timestamp">0100hrs</p>
        </div>
        <!-- news items ends-->

Ответы [ 4 ]

2 голосов
/ 12 марта 2010

Вы ищете метод closest, который находит самый внутренний родительский элемент, содержащий элемент.

Например:

$('div.newsItems h3 a').click(function() { 
    $(this).closest('div.newsItems').addClass('first');
});
0 голосов
/ 12 марта 2010

Также мы должны добавить что-то вроде строки ниже, чтобы удалить класс после нажатия другого триггера:

var dropDown = $(this).parent().next().next(); /* This is configured for my script. Yours may be different*/
$('div.newsitems').not(dropDown).removeClass('first');
0 голосов
/ 12 марта 2010

Только для альтернативного ответа.

$('div.newsItems').click(function(e){
    if($(e.target).is("IMG")){
        $(this).addClass("first");
    }
}

Редактировать: Изменил if($(e.target).is("a")){ на IMG, поскольку SLaks указал, что я пропустил этот тег.

0 голосов
/ 12 марта 2010
$('div.newsitems h3 a').click(function() {
    $(this).parent().parent().addClass('first');
});
...