在jQuery中使用.fadeOut()时禁用单击

我正在建立纸牌游戏。 当用户点击卡片时,卡片会淡出。 但是,目前,存在一个严重的错误。 用户可以多次单击一张卡,将多个卡号添加到arrays中(基本上可以选择大量的卡)。

我怎么解决这个问题? 这是我到目前为止的代码:

$(clicked_id).fadeOut('fast'); 

任何帮助,将不胜感激!

编辑:整个代码:

  var cardsPicked = new Array; var suits = ["♥", "♦", "♣", "♠"]; var king = 0; var numbers = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]; var cardRules = ["Waterfall", "You", "Me", "Girls", "Thumbmaster", "Guys", "Heaven", "Mate", "Rhyme", "Catagories", "Make a rule", "Question master", "Pour your drink!"]; var currentId; function getCard(clicked_id) { clicked_id = "#" + clicked_id; $(clicked_id).fadeOut('fast'); var newCard = Math.floor((Math.random() * 13) + 1); var newSuit = Math.floor((Math.random() * 4) + 1); var currentCard; var x = document.getElementById("pick"); var rules = document.getElementById("rules"); var kings = document.getElementById("kings"); var currentCards = document.getElementById("currentCard"); if (cardsPicked.indexOf(numbers[newCard - 1] + " " + suits[newSuit - 1]) == -1) { if (numbers[newCard - 1] == "K" && king < 4) { king = king + 1; } if (king == 4) { king = "All kings found!"; alert("Fourth king picked. Down the jug!"); } cardsPicked.push(numbers[newCard - 1] + " " + suits[newSuit - 1]); for (count = 0; count < cardsPicked.length; count++) currentRule = cardRules[newCard - 1]; x.innerHTML = cardsPicked; currentCards.innerHTML = numbers[newCard - 1] + " " + suits[newSuit - 1]; rules.innerHTML = currentRule; kings.innerHTML = king; } else { getCard(); } } 

试试这个

 $(clicked_id).off().fadeOut('fast'); 

如果通过内联onclick调用事件:

 $(clicked_id).prop("onclick", "").off().fadeOut('fast'); 

DEMO

您应首先删除元素上的click事件,然后使用将重新附加click事件的回调函数执行淡出效果。

 $('#clicked_id').off('click').fadeOut('fast', function () { $('#clicked_id').on('click'); }); 

这是完全未经测试的,只是一个理论,但它可能会奏效!