[英]JavaScript code doesn't work on dynamically generated html code
我试图在生成Angular模板后运行JavaScript代码,但是我发现JavaScript代码不在动态生成的视图上运行。 例如,在此代码中, div2
是通过单击div1
生成的, alert("aaa")
是通过单击div1
来运行的,但是单击div2
时不会运行。
index.html的主体
<div id="div1" ng-init="showDiv2 = false">
<div class="alertonclick" ng-click="showDiv2 =true" style="background-color: red"><br/></div>
</div>
<div id="div2" ng-if="showDiv2">
<div class="alertonclick" style="background-color: green"><br/></div>
</div>
和index.html中的脚本:
<script src="~/index.js"></script>
index.js
$(document).ready(function () {
$(".alertonclick").click(function () {
alert("aaaa");
});
});
问题在于,在加载页面时,将完成alertonclick
类alertonclick
功能之间的关联。 但是div2
尚未创建。 要解决此问题,一种解决方案是使用ng-show
而不是ng-if
:
<div id="div1" ng-init="showDiv2 = false">
<div class="alertonclick" ng-click="showDiv2 =true" style="background-color: red"><br/></div>
</div>
<div id="div2" ng-show="showDiv2">
<div class="alertonclick" style="background-color: green"><br/></div>
</div>
这样, div2
从头开始生成,并具有alertonclick
函数,但它是隐藏的。
问题在于,在呈现页面之后,您将“ .alertonclick”类的点击侦听器放置了。 那时第二个div在DOM中不存在。 一种可能的解决方案是在显示第二个div之后重置单击侦听器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.