Jquery有2次点击功能

时间:2015-10-30 15:06:59

标签: javascript jquery click

我想通过点击选择或取消选择div。

我想要这个:

  • 点击1 =添加颜色并选择div
  • 点击2 =如果相同的ID变为粉红色,如果不同则变为白色。

我的问题是当我点击第一个div(变为红色),然后是第二个div(首先是白色和第二个),然后是第三个div,第三个div变成粉红色,或者我想重新运行脚本(为了使第三个div像第一个div一样红。)

我的代码:

$(document).ready(function () {
    $i = 1;
    $firstcase = "";

    $(".blackcase").click(function firstclick(event) {

        if ($i == 1) 
        {
            $("#" + event.target.id).css("background-color", "red");
            $firstvalue = $("\#" + event.target.id).html();
            $firstcase = "\#" + event.target.id + "";
            $i++;
        }         
        else 
        {
            return false;
        }

        $(".blackcase").one("click", function (event) {

            $firstcase2 = "\#" + event.target.id + "";

            if ($("#" + event.target.id).is($firstcase)) 
            {
                $("#" + event.target.id).css("background-color", "pink");
                $i = 0;
                $firstcase = "";
                return;
            }             
            else 
            {
                $(".blackcase").css("background-color", "white");
                $i = 1;
                $firstcase = "";
                return false;
            }
        });
        return false;
    });
}); 

JSFIDDLE:https://jsfiddle.net/12gwq95u/3/

1 个答案:

答案 0 :(得分:5)

如果您有单个事件处理程序并将最后单击的id存储在单击处理程序之外的变量中,则可以大规模简化逻辑。试试这个:

var lastClicked = '';
$(".blackcase").click(function(e) {
    e.preventDefault();
    $('.blackcase').removeClass('red pink');
    $(this).addClass(lastClicked != this.id ? 'red' : 'pink');
    lastClicked = this.id;
});

Example fiddle