$(".p-list > ul > li").click(function () {

    if ($(this).children('.sub-parts').length > 0) {

        if (!$(this).hasClass('open')) {
            $(this).addClass('open');
            $(this).find('.sub-parts').fadeIn('normal');
        }
    }
});


$(document.body).on('click', ".p-list .open-tl", function () {
    if ($(this).parent('.open').length > 0) {
        $open = $(this).parent('.open');
        $($open).find('.sub-parts').hide();
        $($open).removeClass('open');
    }
});

У меня есть этот код, который скрывает div при щелчке и показывает их, когда они нажимают на open'tab .open-tl.

Проблема в том, что второй код выполняется после кода Fadein, когда я не хочу запускать второй код.

Пожалуйста, проверьте http://jsfiddle.net/vNfeD/

0
user2126670 13 Мар 2013 в 11:39
Есть ли причина, по которой вам нужен набор функций 1.9, если вы не можете преобразовать код для работы с 1.9, кажется странным, что вам понадобится 1.9?
 – 
Ryan McDonough
13 Мар 2013 в 12:04

1 ответ

Лучший ответ
$open = $(this).parent('.open');
$($open).find('.sub-parts').hide();
$($open).removeClass('open');

Должно быть

$open = $(this).parent('.open');
$open.find('.sub-parts').hide();
$open.removeClass('open');

И вы можете уменьшить его

$(this).parent('.open').removeClass('open').find('.sub-parts').hide();

Родительский элемент, если его можно удалить, если объект пуст, jquery ничего не сделает

if ($(this).parent('.open').length > 0) { // remove that

Чтобы не разрешить выполнение второго кода, когда дочерний элемент скрыт, добавьте event.stopPropagation (); просто когда нет .open и когда есть сабы, проверьте скрипку

http://jsfiddle.net/r043v/vNfeD/5/

2
r043v 13 Мар 2013 в 12:00
Спасибо за вашу помощь, я хочу скрыть li при нажатии на .open-tl и показать их при щелчке li. Ваш код еще не сделал этого.
 – 
user2126670
13 Мар 2013 в 12:07
Если у меня все нормально, когда я нажимаю на 6 ли, разве не хорошо?
 – 
r043v
13 Мар 2013 в 12:14