Регистрация jQuery щелчка, первый и второй клик
Есть ли способ запустить две функции, подобные этому:
$('.myClass').click(
function() {
// First click
},
function() {
// Second click
}
);
Я хочу использовать базовое событие переключения, но .toggle()
устарел.
Ответы
Ответ 1
Попробуйте следующее:
$('.myClass').click(function() {
var clicks = $(this).data('clicks');
if (clicks) {
// odd clicks
} else {
// even clicks
}
$(this).data("clicks", !clicks);
});
Это основано на уже отвеченном вопросе: Альтернатива методу jQuery.toggle(), который поддерживает eventData?
Ответ 2
Или это:
var clicks = 0;
$('.myClass').click(function() {
if (clicks == 0){
// first click
} else{
// second click
}
++clicks;
});
Ответ 3
это я работал для своего меню
var SubMenuH = $('.subBoxHederMenu').height();
var clicks = 0;
$('.btn-menu').click(function(){
if(clicks == 0){
$('.headerMenu').animate({height:SubMenuH});
clicks++;
console.log("abierto");
}else{
$('.headerMenu').animate({height:"55px"});
clicks--;
console.log("cerrado");
}
console.log(clicks);
});
Ответ 4
Я не знаю, что вы пытаетесь сделать, но мы можем получить базовый переключатель
$('.myClass').click({
var $this=$(this);
if($this.is(':hidden'))
{
$this.show('slow');
}else{
$this.hide('slow');
}
})
note: это работает для бесконечного события клика для этого элемента.. не только для двух кликов (если это то, что вы хотите)
ИЛИ вы можете использовать класс css, чтобы скрыть/показать div и использовать jquery.toggleClass()
Ответ 5
В приведенном ниже методе Мы передаем массив функций нашей пользовательской функции .toggleClick()
. И мы используем атрибут data-*
HTML5
для хранения индекса функции, который будет выполнен в следующей итерации процесса обработки событий кликов. Это значение, сохраненное в свойстве data-index
, обновляется на каждой итерации, поэтому мы можем отслеживать индекс функции, которая должна быть выполнена в следующей итерации.
Все эти функции будут выполняться один за другим на каждой итерации события click. Например, в первой итерационной функции в index[0]
будет выполняться, в 2-й итерационной функции, сохраненной в index[1]
, будет выполнена и так далее.
В этом случае вы можете передать только 2 функции в этот массив. Но этот метод не ограничивается только двумя функциями. Вы можете передавать 3, 4, 5 или более функций в этом массиве, и они будут выполнены без внесения каких-либо изменений в код.
В приведенном ниже фрагменте приведена обработка четырех функций. Вы можете передавать функции в соответствии с вашими потребностями.
$.fn.toggleClick = function(funcArray) {
return this.click(function() {
var elem = $(this);
var index = elem.data('index') || 0;
funcArray[index]();
elem.data('index', (index + 1) % funcArray.length);
});
};
$('.btn').toggleClick([
function() {
alert('From Function 1');
}, function() {
alert('From Function 2');
}, function() {
alert('From Function 3');
}, function() {
alert('From Function 4');
}
]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button type="button" class="btn">Click Me</button>
<button type="button" class="btn">Click Me</button>
Ответ 6
var click_s=0;
$('#show_pass').click(function(){
if(click_s % 2 == 0){
$('#pwd').attr('type','text');
$(this).html('Hide');
}
else{
$('#pwd').attr('type','password');
$(this).html('Show');
}
click_s++;
});