Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AngularJs完整的Jquery选择不起作用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用 Jquery插件在AngularJS指令中操纵DOm.

我不确定AngularJs是否正在使用Jquery的完整版本,尽管完整版本脚本在AngularJs脚本位于主体上时是理所当然的,因此理论上AngularJS应该使用完整版本.但是,日志条目inside指令不会显示任何选中内容.然Chrome控制台内的完全相同的语法会返回ul中的所有lis.@H_618_7@

这是Html@H_618_7@

<ul id="myUl"  class="gallery unstyled">
    <li class="galleryitem" ng-repeat="i in images">
        <a href="{{i.LargeImage.URL}}"><img ng-src="{{i.MediumImage.URL}}" /></a>
    </li>
</ul>

指示@H_618_7@

.directive('gallery',function() {
    return {
        reStrict : 'C',link : function postLink(scope,iElement,iAttrs) {
        console.log($(".gallery li"));
      }
    }
   }

PS:我刚刚意识到这一点@H_618_7@

console.log($(".gallery"));

确实返回带有li的ul但不是@H_618_7@

console.log($(".gallery li"));

这让我觉得没有加载完整版.@H_618_7@

解决方法

加载了jQuery,但是当你在链接函数调用$(‘.gallery’)时,ng-repeater表达式还没有被评估过,所以那时所有那些li元素都不在DOM中.只是为了试验,您可以在调用选择器之前添加延迟

setTimeout(function(){
  console.log($(".gallery li"));
},1000);

然后,您将获得所有li元素,因为您在评估ng-repeater后查询DOm.这就是从控制台运行选择li节点的原因.@H_618_7@

在继续之前,当加载库时,表示angular使用jQuery意味着angular.element实现了选择器,并且对指令内部元素的引用具有可用的jQuery方法.建议在指令元素的上下文中操作DOM@H_618_7@

iElement.find('li')    // instead of $('.gallery li')

现在,您可能想知道,那么我该如何修改DOM?那么,这取决于你想要实现的目标.由于你想在NgRepeater中渲染所有li之后操作DOM,你可能想要使用一个特殊的指令checkLast来检查转发器中的最后一个项是通过检查$last是否为真来呈现的@H_618_7@

这是google groups discussion中某人的jsfiddle.@H_618_7@

或者你可以观察一些范围属性来改变.@H_618_7@

大佬总结

以上是大佬教程为你收集整理的AngularJs完整的Jquery选择不起作用全部内容,希望文章能够帮你解决AngularJs完整的Jquery选择不起作用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。