.hover
это не событие в JQuery, это ярлык. В принципе, это похоже на написание
$(selector).mouseenter(handlerIn).mouseleave(handlerOut);
.click
используется, чтобы иметь такой ярлык с .toggle(handler1, handler2)
, но он устарел и удаляется.
Вам нужно использовать флаг. Я предпочитаю вставлять этот флаг в объект данных. Просто сделать что-то вроде этого:
$(document).ready(function() {
$(".button").click(function() {
var $this = $(this);
$this.data("click_toggle", !$this.data("click_toggle"));
$('.div1').animate({width: $this.data("click_toggle") ? '200px' : '100px'});
}
});
Fiddle
Флаг также может быть класс, который вы переключаетесь с toggleClass
и проверить, если элемент имеет класс с .hasClass
.
$(".button").click(function() {
var $this = $(this);
$this.toggleClass('active');
$('.div1').animate({width: $this.hasClass("active") ? '200px' : '100px'});
});
Fiddle
Наконец, вы можете использовать CSS анимацию. Вам просто нужно переключить класс и использовать CSS для анимации ширины.В зависимости от вашей разметки, хотя, возможно, придется использовать различные методы DOM обхода, но вот пример:
HTML
<div class="div1"></div>
<button class="button">Click</button>
JS
$(".button").click(function() {
$(this).prev().toggleClass('active');
//If you have a single div1, you can use $('.div1').toggleClass('active');
});
CSS
.div1{
width:100px;
background:green;
border:1px solid red;
height:100px;
-webkit-transition : all 0.5s;
-moz-transition : all 0.5s;
-o-transition : all 0.5s;
transition : all 0.5s;
}
.div1.active{
width : 200px;
}
Fiddle
клик не имеет события mouseout –
Да, я знаю, извините за отсутствие ясности. Я хочу сделать эффект, когда вы нажимаете, а ширина увеличивается до 200. Затем вы нажимаете снова, и ширина возвращается к норме. – zet
для клика, я могу предложить вам события mousedown и mouseup;) – Mephiztopheles