javascript - JQuery 未检测到 Angular 指令内的 DOM 元素

标签 javascript jquery html angularjs angular-directive

我有一个带有链接模板的 Angular Directive(指令),其中有一个简单的代码块

<div>
  <h1 class="dfaded">Hello World</h1>
</div>

现在在我的index.html文件的末尾我放置了一个Javascript函数

<script>
$(document).ready(function () {
    $('.dfaded').addClass("ahidden").viewportChecker({
        classToAdd: 'avisible animated fadeIn',
        offset: 100
    });
});
</script>

但是这个功能不起作用。在进一步调试时,即使我放置一个简单的函数,例如

$('.dfaded').hide();

它仍然无法正常工作。现在,如果我将此 HTML block 放在指令之外 - 一切正常。因此,JQuery 很可能无法识别我放入 Angular 指令中的 DOM 元素。

在 HTML 页面中加载所有指令文件后,我添加了 jquery 文件。任何帮助将不胜感激。

最佳答案

您的 jQuery 脚本在 Angular 处理并呈现模板文件之前运行。这就是为什么您不应该按照习惯的方式在 Angular 项目中使用 jQuery 的原因之一。

为了使其正常工作,将 viewportChecker 插件初始化包装到自定义指令中。例如,它看起来像这样:

app.directive('viewportChecker', function() {
    return {
        link: function(scope, element) {
            element.addClass("ahidden").viewportChecker({
                classToAdd: 'avisible animated fadeIn',
                offset: 100
            });
        }
    };
});

然后您可以将此指令附加到必要的标记:

<div>
    <h1 class="dfaded" viewport-checker>Hello World</h1>
</div>

关于javascript - JQuery 未检测到 Angular 指令内的 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276714/

相关文章:

javascript - 未捕获的语法错误 : Unexpected token multiple form functions

html - CSS 溢出 :hidden causing extra bottom margin

javascript - Jqgrid - 如何更改禁用/灰色文本颜色

javascript - 两个 Lightswitch 查询之间的匹配项

javascript - TinyMCE 在 Ctrl + V 上粘贴到编辑器两次

javascript - jQuery 悬停下拉菜单全宽大小

javascript - 改变html中的滚动条

javascript - HTML 在元素上添加属性

javascript - 如何在页面 View 中触发 jQuery?

javascript - 在 Angular 2 + Meteor 应用程序中包含 Google 字体