javascript - 为什么我的指令被调用两次?

标签 javascript jquery html angularjs

我有一个名为 myEnter 的指令,它附加到 html 中的输入框。 代码如下:

app.directive('myEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown", function (event) {
            if(event.which === 13) {
                $(".window").animate({ scrollTop: $("#scr").height() }, 1000);
                scope.$apply(function (){
                    scope.$eval(attrs.myEnter);
                });
                event.preventDefault();
            }
            if(event.which === 38) {
                    console.log("up key pressed!");
                    $(".window").animate({ scrollTop: $("#scr").height() }, 1000);
                    scope.$apply(function (){
                        var arr = scope.history;
                        console.log(scope.history);
                        console.log(arr);
                    });
                    event.preventDefault();                 
            }
        });
    };
});

发生的事情是,它正在检测输入按键。 另外,正如您所看到的,我还让它检测输入框中的“UP”按键。

这两件事都运作良好。但是,每当我按下向上键时,控制台都会记录“向上键已按下!”两次。它应该只运行一次,而每按一次 UP 按键,它就会运行两次。

谁能告诉我我在这里做错了什么?

最佳答案

你也许应该尝试添加

event.stopImmediatePropagation() ;

之后

 event.preventDefault(); 

关于javascript - 为什么我的指令被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43393100/

相关文章:

javascript - 使用 JSON.parse 将字符串(变量)转换为对象,错误意外标记

javascript - 防止工具提示转换 HTML 实体

javascript - jquery 单击链接并获取 radio 输入值以更改跨度中的文本

html - 无法使下拉悬停工作

html - Div 不会换行,但有时会换行

javascript - JavaScript 标识符中允许使用除 $ 之外的哪些不常见字符?

javascript - PHP/jQuery - 脚本无法在表格中每一行的单元格中工作

javascript - 如何清除所有同名的单选按钮。我想将名称作为变量传递

html - 带有倾斜边框的 css 侧边栏

javascript - Foundation 6 Accordion 无法打开