jQuery: дочерний элемент, запускающий событие для своего родительского элемента - PullRequest
1 голос
/ 16 января 2009

У меня есть несколько вложенных элементов div, таких как:

<div class="main">
blah blah blah <div class="clickme">clickme</div>
</div>

<div class="main">
bleh bleh bleh <div class="clickme">clickme</div>
</div>

<div class="main">
blih blih blih <div class="clickme">clickme</div>
</div>

Я хочу запустить событие переключения, которое покажет / скроет элемент div, помеченный классом "main", нажав соответствующий текст "clickme" внутри его дочернего тега div с классом "clickme" Извините, я не могу понять, как это сделать. Спасибо.

1 Ответ

10 голосов
/ 16 января 2009
$(".clickme").click(function() {
    $(this).parent("div.main").toggle();
});

Что касается вашей второй проблемы, вам нужно добавить:

$(this).unbind('click');

В конце любой из ваших функций переключения, и она будет работать так, как вы намерены. Удачи.

РЕДАКТИРОВАТЬ: в ответ на вашу последнюю проблему, это должно сделать это:

$(".abrefecha").click( function() {
    var that = this; // save this in that :)
    jQuery(this).parent().toggle(
        function () {
            var itemId = jQuery(this).attr("id");
            var itemIndex = $(".showhide").index(this);
            var currentItemHeight = b[itemIndex] + 30 + 'px'
            jQuery(this).css("overflow","auto");
            jQuery(this).animate( { height: currentItemHeight } , 500 );
            $(that).html('close'); // change html inside pink to 'close'
            $(this).unbind('click');
        },
        function () {
            jQuery(this).css("overflow","hidden")
            jQuery(this).animate( { height:"60px" } , 500 );
            $(that).html('abrefecha'); // change html back to 'abrefecha'
            $(this).unbind('click');
        }
    );
});
...