JQuery 未检测到 angular 指令中的 DOM 元素
JQuery not detecting DOM elements inside angular directive
我有一个 angular 指令,带有一个链接模板,其中有一个简单的代码块
<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 块放在指令之外 - 一切正常。所以很可能 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>
我有一个 angular 指令,带有一个链接模板,其中有一个简单的代码块
<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 块放在指令之外 - 一切正常。所以很可能 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>