jQuery .toggle() не работает должным образом со второй функцией?

Я пытаюсь создать кнопку, чтобы показать / скрыть div под ней, все работает нормально, я просто борюсь с последним битом!

Мне нужно различать, является ли это действием показа или скрытия, чтобы я мог передать переменную в другом месте, вот что у меня есть.

$(this).find('.hide-close').click(
            function() {
                $(this).siblings('.dragbox-content').toggle(function() { 

                    alert($(this).parent().attr("id") + ' Show');

                    },function() { 

                    alert($(this).parent().attr("id") + ' Hide');

                    }

                );

            })
        .end()
        });

Если использовать следующий код, удаляя вторую функцию из toggle(), она работает?! Но тогда у меня нет переменной показать/скрыть.

$(this).find('.hide-close').click(
            function() {
                $(this).siblings('.dragbox-content').toggle(function() { 

                    alert($(this).parent().attr("id") + ' Show');

                    }

                );

            })
        .end()
        });

Заранее спасибо за любую помощь, надеюсь, это что-то действительно простое, чего я просто не вижу! :)


person Christopher    schedule 14.06.2010    source источник


Ответы (2)


Вы можете использовать $(this).is(":visible") внутри функции, чтобы проверить, видима она или нет.

person rahul    schedule 14.06.2010
comment
Фантастически :) для проверки я использовал это .. if($(this).is(:hidden)) { alert($(this).parent().attr(id) + ' is now hidden.'); } Работает отлично, спасибо за помощь! - person Christopher; 14.06.2010

Функция переключения jQuery предназначена для назначения функций для выполнения при возникновении события (щелчка мыши). Чтобы на самом деле запустить событие, вам нужно будет вызвать функцию щелчка.

$('.dragbox-content').toggle(function() { 
        alert($(this).parent().attr("id") + ' Show');
    },function() { 
        alert($(this).parent().attr("id") + ' Hide');
    }
);

Используйте этот фрагмент кода, чтобы назначить функцию, которая будет выполняться по клику.

$(this).find('.hide-close').click(
function() {
    $(this).siblings('.dragbox-content').click();
})
.end();

и это, чтобы запустить событие.

person vsr    schedule 14.06.2010