JQuery $ (это). Найти не работает - PullRequest
10 голосов
/ 17 февраля 2011

Я делаю аккордеон с длинным списком статей.

У меня работает jQuery, когда я использую следующее, только он будет скользить вверх / вниз по каждой статье на странице:

$('article a').click(function() {
    $('article').find('h3').slideToggle('fast');
});

Теоретически это должно работать, но ничего не делает:

$('article a').click(function() {
    $(this).find('h3').slideToggle('fast');
});

Вы можете увидеть демо здесь: http://jsfiddle.net/CfqGG/

Где я иду не так?

Ответы [ 5 ]

16 голосов
/ 17 февраля 2011

В теории это должно не работать, потому что в вашем событии клика this относится к <a>, а не <article>, потому что ваше событие клика связано с <a>.

Попробуйте это:

$('article a').click(function() {
    $(this).parent().find('h3').slideToggle('fast');
});
7 голосов
/ 17 февраля 2011
$(this).siblings('h3').slideToggle('fast');

this относится к элементу a, а find ищет элемент в его descendants.h3 не потомок, а родной брат.

3 голосов
/ 17 февраля 2011

Вам нужно это:

$('article a').click(function() {
    $(this).closest('article').find('h3').slideToggle('fast');
});

Проверьте ДЕМО

1 голос
/ 11 марта 2014

Вот код обновления, проверьте его, вам нужно указать свой брат, ура

$(document).ready(function() {    
    //hides articles
    $('article h3').hide();  
    //article accordian
    $('article a').click(function() {
        $(this).siblings('h3').slideToggle('fast');
    });
});     
1 голос
/ 17 февраля 2011

В вашем коде $('article a'), а затем $(this) смотрит внутрь якоря.

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