这可能是一个奇怪的情况,以前没有人曾经历过这种情况,但是我发布这个有机会知道我不知道的事情.
我正在使用jQuery 2.0.3和AngularJS.
如果我有这样的锚index.html:
# index.html
<a href="#" class="clickme">Click Me</a>
<script type="text/javascript">
$(function() {
$('.clickme').click(function() { console.log("click"); });
});
</script>
Run Code Online (Sandbox Code Playgroud)
然后它工作,当我点击它,它输出'点击'.但是当我把它放在我用ng-include属性包含的模板中时,jQuery突然间不会触发.如果我将脚本放在带有锚点的模板中,它就会触发.
# index.html
<div ng-include="'path/to/template.html'"></div>
# template.html
<a href="#" class="clickme">Click Me</a>
<script type="text/javascript">
$(function() {
$('.clickme').click(function() { console.log("click"); });
});
</script>
Run Code Online (Sandbox Code Playgroud)
使用模板的指令也是如此.这很奇怪,并且通过一些下拉菜单给我带来了很多麻烦.
有谁知道为什么会这样?
Cod*_*gue 97
由于您clickme可能无法在DOM上使用 - 而是在Angular加载时将其推送到DOM中template.html- 您需要使用jQuery的事件委派而不是使用.click:
$(document).on("click", ".clickme", function() {
console.log("click");
});
Run Code Online (Sandbox Code Playgroud)
这将确保jQuery绑定到文档,然后监视具有clickme类的元素上的任何单击事件.