2015-09-08 4 views
1

Можно ли добавить задержку только для класса класса toggleClass?Можно ли добавить задержку только для класса класса toggleClass?

В скрипке я бы хотел, чтобы красный div сразу же поменялся зеленым цветом при нажатии. Но при повторном нажатии на него следует отложить поворот на красный.

http://jsfiddle.net/simbasounds/ggk8xxya/1/

HTML

<div class="container"> 
    I am a div 
</div> 

CSS

.container { 
    padding: 10px; 
    background: red; 
} 

.container.green { 
    background: green; 
} 

JQuery

$(".container").click(function(){ 
    $(this).toggleClass('green'); 
}); 
+0

почему бы вам не использовать CSS3 анимации с синхронизацией? кажется немного больше работы, но менее хаки – Alex

+0

http://api.jquery.com/toggleclass/. 'toggleClass' может принимать функцию и состояние, чтобы вы могли написать ее самостоятельно. – putvande

+0

@simbasounds ... delay as in you want fadeEffect при преобразовании с зеленого на красный или просто на простую задержку времени? –

ответ

1

Для Simple Time Delay во время перехода от зеленого до красного

$(".container").click(function(){ 
    var $element = $(this); 

    //check if element has green class --> remove green class with a delay 
    if ($element.hasClass('green')) { 
    var delay = 1000; //ms 
    setTimeout(function(){ 
     $element.removeClass('green'); 
    },delay); 
    } 
    // element doesn't have green class --> add it 
    else { 
    $element.addClass('green'); 
    } 
}); 

fiddle

+0

Очень приятно, спасибо bhavya_w – simbasounds

2

Как насчет очевидного пути?

$(".container").click(function(){ 
    if ($(this).hasClass('green')) { 
    // add your delay here 
    } 
    else { 
    $(this).toggleClass('green'); 
    } 
}); 
+0

Это выглядит очень хорошо, спасибо @ lex82. – simbasounds

Смежные вопросы