停止点击.click()

时间:2014-03-31 07:51:27

标签: javascript jquery

有没有办法在满足条件时停止.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

6 个答案:

答案 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