有没有办法在满足条件时停止.click()的触发?我的代码如下:
$(document).ready(function() {
// stocheaza ordinea corecta a imaginilor
var correctOrder = $("#puzzle > img").map(function() {
return $(this).attr("src");
}).get();
// amesteca imaginile
var x = $("#puzzle > img").remove().toArray();
for (var i = x.length - 1; i >= 1; i--) {
var j = Math.floor(Math.random() * (i + 1));
var bi = x[i];
var bj = x[j];
x[i] = bj;
x[j] = bi;
}
$("#puzzle").append(x);
// event onclick pe 2 piese sa'si schimbe pozitia
$("img.element").click(function(){
if (clickCount == 0)
{
imgSrc = $(this).attr("src");
lastImgId = $(this).attr("id");
clickCount++;
}
else {
$("#"+lastImgId).attr("src",$(this).attr("src"));
$(this).attr("src",imgSrc);
clickCount = 0;
// returneaza ordinea imaginilor curente
var currentOrder = $("#puzzle > img").map(function() {
return $(this).attr("src");
}).get();
// compara ordinea imaginilor curente cu cea corecta
if (currentOrder.compare(correctOrder))
updateBubble(2);
}
});
});
当满足此条件$("img.element").click(function(){ }
时,我需要停止if (currentOrder.compare(correctOrder))
。目前这个.click()函数允许我点击2个图像并改变它们的位置,但updateBubble(2);
是最终的反馈,我必须在给出这个反馈时不能改变图像。 THX
答案 0 :(得分:2)
试试这个:
$("img.element").click(function(){
if(currentOrder.compare(correctOrder))//return and do not execute click event code if condition
return;
//rest click event code here
});
答案 1 :(得分:2)
停止点击的一般方法是使用preventDefault,如下所示:
("img.element").click(function(event){
if(condition) {
event.preventDefault();
}
}
答案 2 :(得分:1)
$(this).unbind('click');
可能会做你想要的......
答案 3 :(得分:1)
尝试
if(condition){
return false;
}
这将阻止该功能的其他部分发射!
答案 4 :(得分:1)
试试这个:
$("img.element").click(function(){
if(currentOrder.compare(correctOrder) ){
return false; // return and prevent further listener.
}
if (clickCount == 0)
{
imgSrc = $(this).attr("src");
lastImgId = $(this).attr("id");
clickCount++;
}
else {
$("#"+lastImgId).attr("src",$(this).attr("src"));
$(this).attr("src",imgSrc);
clickCount = 0;
// returneaza ordinea imaginilor curente
var currentOrder = $("#puzzle > img").map(function() {
return $(this).attr("src");
}).get();
// compara ordinea imaginilor curente cu cea corecta
if (currentOrder.compare(correctOrder))
updateBubble(2);
}
});
答案 5 :(得分:1)
我认为您应该使用.on()
来绑定事件并.off()
取消绑定事件,以此类似改变:
$("img.element").on('click', function(){ // use with .on() handler
在这里取消绑定事件:
if (currentOrder.compare(correctOrder))
updateBubble(2);
$(this).off('click'); // use .off() to unbind the click event