jQuery fadeOut () и проблема с нажатием - PullRequest
1 голос
/ 01 марта 2011

Это для возвращающего, как часть управляемой PHP CMS.

Мы хотим, чтобы возвращающий (если имеет класс admin ) добавил div hide , которая является маленькой кнопкой XВозвращающий должен автоматически вызывать fadeOut () через 4 секунды или fadeOut (), если пользователь нажимает кнопку hide .

Каждый из кодов // HERE работает самостоятельно, новместе он будет запускать только отложенные fadeOut () и , а не нажатый!

Любая помощь будет полезна.Спасибо, Ник.

$(".success, .info, .warning, .error").each(function(){
    if(!$(this).hasClass("admin")){
        $(this).append('<div class="hide"></div>');
        $(this).delay(4000).fadeOut(); // HERE
    }
});
$(".hide").click(function(){
    $(this).parent().fadeOut(); // HERE
});

Ответы [ 2 ]

1 голос
/ 01 марта 2011

, так как .hide добавляется динамически, вам нужно использовать .live () (или делегат ), чтобы обработчик щелчка работал правильно.

Поскольку вы используете delay(), попробуйте вызвать .stop () для родителя, чтобы очистить задержку запуска анимации затухания.

$(".hide").live('click', function(){
    $(this).parent().stop().fadeOut(); // HERE
});

Пример этого на jsfiddle .

0 голосов
/ 01 марта 2011
if($(this).hasClass("admin")){}else{

Эта строка может быть чище, если использовать! до $ 1002 *

if ( !$(this).hasClass("admin") ) {

Это позволяет избежать ненужных if / else. Можете ли вы опубликовать HTML, чтобы увидеть, на что ссылается parent ()?

...