Подтвердите только 1 функцию времени с jQuery
Вопрос
У меня есть эта функция, которая будет перемещать список изображений, когда я нажимаю на кнопку #shuffle, я хочу вызвать сообщение, если подтверждено во второй раз, я не хочу задать снова!
Как это код?
$('#shuffle').click(function(){
if(confirm('This will shuffle all your bla bla bla')){
$("#upimagesQueue li").shuffle();
}
});
Решение
Вы можете использовать переменную, как это:
var confirmed = false;
$('#shuffle').click(function(){
if(confirmed || confirm('This will shuffle all your bla bla bla')){
$("#upimagesQueue li").shuffle();
confirmed = true;
}
});
Это начинается с подтверждения, не подтвержденного, но в первый раз оно есть, это установлено значение true. Это означает первую часть condition1 OR condition2
в твоем if()
будет правдой, поэтому подтверждение не появится снова.
В качестве альтернативы вы можете использовать .data()
Чтобы сохранить переменную для этого:
$('#shuffle').click(function(){
if($(this).data('confirmed') || confirm('This will shuffle all your bla bla bla')){
$(this).data('confirmed', true);
$("#upimagesQueue li").shuffle();
}
});
Другие советы
Это еще более читаемый путь
$('#shuffle').bind('click', function(event){
if(confirm('are you sure?')){
$(this).unbind(event);
$('#shuffle').bind('click', function(){
$("#upimagesQueue li").shuffle();
});
$("#upimagesQueue li").shuffle();
}
});
Видеть: http://api.jquery.com/one/
Также может быть написан как:
$('#shuffle').bind('click', function(event){
if(confirm('are you sure?')){
$(this).unbind(event).click(function(){
$("#upimagesQueue li").shuffle();
})
$("#upimagesQueue li").shuffle();
}
});
Не связан с StackOverflow