请教一下各位,像这段回车事件,怎样让它只执行一次呢

请教一下各位,像这段回车事件,怎样让它只执行一次呢,按照这样写,每点击一次enter,就会增加一个div,怎么让它已经有了div的时候这段就不生效呢?

$(this).children("input").keydown(function(){
    if(event.keyCode == 13){
        $(".select-no").hide();
        $(".select-result dl").append("<dd class='selected' id='selectA'><a href='#'></a></dd>");
        $("#selectA a").html($(this).val());
    }
})
阅读 3.5k
4 个回答
$(this).children("input").keydown(function() {
                if (event.keyCode == 13) {
                    if($(".select-result dl").length > 0)//这里判断是否已经存在
                        return;
                    else{
                        $(".select-no").hide();
                        $(".select-result dl").append("<dd class='selected' id='selectA'><a href='#'></a></dd>");
                        $("#selectA a").html($(this).val());
                    }
                }
            })

增加之前判断一下是否存在,不存在就增加,否则就直接return

新手上路,请多包涵
function runOnce(fn, context) { //控制让函数只触发一次
    return function () {
        try {
            fn.apply(context || this, arguments);
        }
        catch (e) {
            console.error(e);//一般可以注释掉这行
        }
        finally {
            fn = null;
        }
    }
}
$('body').on('keydown', function(){
    if(event.keyCode == 13){ 
        console.log('enter');
        $('body').off('keydown')
    }
})
$(this).children("input").keydown(function(){
    if(event.keyCode == 13){
        //判断是否存在元素,存在则阻止代码继续执行
        if($('#selectA').length){
            return;
        }
        $(".select-no").hide();
        $(".select-result dl").append("<dd class='selected' id='selectA'><a href='#'></a></dd>");
        $("#selectA a").html($(this).val());
    }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题