0
$(".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/

4

1 回答 1

2
$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 并且有 subs 时,检查小提琴

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

于 2013-03-13T07:55:03.120 回答