Javascript Jquery事件在我的Angular应用程序中不起作用
在Angular应用程序中加载的一个html文件中,我有一个限制用户输入的JQuery代码(这是一个货币字段) 因此html文件保存了所有的输入控件,下面的代码是: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
<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>