Javascript Jquery事件在我的Angular应用程序中不起作用

Javascript Jquery事件在我的Angular应用程序中不起作用,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,在Angular应用程序中加载的一个html文件中,我有一个限制用户输入的JQuery代码(这是一个货币字段) 因此html文件保存了所有的输入控件,下面的代码是: <script> $(document).ready(function () { $(".currency").on('keydown', function (e) { console.log(e.keyCode); //removed the i

在Angular应用程序中加载的一个html文件中,我有一个限制用户输入的JQuery代码(这是一个货币字段)

因此html文件保存了所有的输入控件,下面的代码是:

<script>
    $(document).ready(function () {
        $(".currency").on('keydown', function (e) {
            console.log(e.keyCode);

            //removed the implementation...
        });
    });
</script>

$(文档).ready(函数(){
美元(“.currency”)。在('keydown',函数(e)上{
console.log(例如keyCode);
//已删除实现。。。
});
});
这是可行的,但我也希望在其他html文件中使用该代码,我认为最好将其放在另一个脚本文件中。 为了安全起见,我将其剪切/粘贴到另一个脚本文件中,我知道该脚本文件会被加载,当我调试时,我会进入('keydown',function(e){行

但是:然后什么也没有发生,即console.log没有执行,限制用户输入的代码(此处不可见)也不起作用

所以我认为这可能是一个时间问题,我的JQuery事件绑定发生在html加载之前,但我读到
on
live
的替代品,它还与将来加载的控件挂钩


或者我理解错了吗?

可能是的,如果您的脚本与angular无关,那么angular可能会在angular有时间转储页面中的html之前运行,因此不会进行事件绑定


您描述要执行的操作的方式似乎必须创建一个属性

可能是的,如果您的脚本与angular无关,则angular可能会在angular有时间转储页面中的html之前运行,因此不会执行任何事件绑定


你描述你想要做什么的方式似乎是你必须创建一个属性

如果你的Angular应用程序正在动态加载这些
.currency
项目,那么你的JS代码片段将不会将
键控
事件处理程序绑定到这些项目。上的
并不能直接替代
live
要动态添加元素,您需要使用

它将事件处理程序绑定到文档元素本身,确保在执行JS时出现。然后,当发生keydown事件时,它将检查事件目标或其父级之一是否为
.currency
,如果是,则执行处理程序

但是由于您使用的是Angular,因此更好的方法是使用它的一个内置指令或创建自己的指令


在您的情况下,.

如果您的Angular应用程序正在动态加载这些
.currency
项,那么您的JS代码片段将不会将
键控
事件处理程序绑定到这些项。
上的
并不能直接替代
live
。要将事件处理程序绑定到动态添加的元素,您需要使用

它将事件处理程序绑定到文档元素本身,确保在执行JS时出现。然后,当发生keydown事件时,它将检查事件目标或其父级之一是否为
.currency
,如果是,则执行处理程序

但是由于您使用的是Angular,因此更好的方法是使用它的一个内置指令或创建自己的指令

在您的情况下,.


...
表达式可以是使用其名称调用函数的简单计算 否则@Prashant Palikhe的答案将是最好的


...
表达式可以是使用其名称调用函数的简单计算
否则@Prashant Palikhe的答案将是最好的

什么返回<代码>$(“.currency”).length
?在调用<代码>之前?是否有动态创建的DOM注册到该事件?什么返回<代码>$(“.currency”).length?在调用上的
之前?是否已将动态创建的DOM注册到该事件中?啊,从未想过这一点。与其使用jQuery限制输入,不如使用Angular。啊,从未想过这一点。与其使用jQuery限制输入,不如使用Angular限制输入。
$(document).on('keydown', '.currency', function (e) {
    console.log(e.keycode);
});
<tag
    ng-keydown="expression">
    ...
</tag>