Angularjs优于jQuery和jQuery代码无法正常工作

时间:2013-11-14 19:19:32

标签: jquery angularjs angularjs-directive

我正在使用AngularJs ng-showng-hide作为控件,并且在不同情况下在javascript中使用show()hide()。但只有ng-showng-hide正在运行,不允许使用jQuery show()hide()

对于以下div,我使用了ng-show并且工作正常:

<div class="generic_error_message" id="genericmsg" ng-show="(QuoteNew.$invalid && submitted) ||(QuoteNew.Birthdate.$pristine && submitted)">

对于同一个div,我在做一些服务调用后使用jQuery来处理不同的条件:

if (!formvalid || !dependentvalid || !InsExistvalid1 || !InsExistvalid2 || postcodeValid || ($('#getQuote').hasClass('ng-invalid')) || !validDependents)
 {
            e.preventDefault();
            $("#genericmsg").show();
}

此处show()不起作用...

努力解决它。请有人帮帮我......

1 个答案:

答案 0 :(得分:3)

无聊的答案,但现在是。不要那样做:)

Angular ng-show和ng-hide在对象上设置强制 display:none 的特定类。 jQuery不知道Angular,所以当它试图再次显示该元素时,它不能取消该类。试图用jQuery和Angular来操纵相同的元素可能会导致很多像这样的问题,所以选择一个并坚持下去(至少对于那个元素)。

编辑:更具体一点。 Angular使用 display:none!important 设置/删除类,而jQuery直接在元素上添加/删除 display:none 。由于Angular使用重要,因此在这种情况下它会取代jQuery。

另请注意,它也没有反过来。如果jQuery隐藏了一个元素,Angular无法显示它,因为Angular只会确保它所使用的类不在那里,它无法知道你用其他东西来隐藏元素。