获取 angular 的长度 js ng-repeat li 列表项 jquery

get length of angular js ng-repeat li listing items with jquery

我正在使用 angular ng-repeat 创建 ul-li 列表。但是在 DOMReady 上,我想要已生成的列表的总长度,并且我想 运行 在 "hover" 或 "click" 上 li 上的事件。 但是我得到的长度是 0 并且没有事件正在触发。获得它的最佳方法是什么? 提前致谢!

 <ul class="megamenuUL">
        <li ng-class="{'active':$index==0}" data-ng-repeat="cg in GroupList">
</li>
    </ul>
    <script>

        $(document).ready(function () {
          console.log($("ul.megamenuUL > li").length);
    });
    </script >

悬停时我需要触发的事件 li

 $("#divOffers ul.megamenuUL > li > a").hover(function () {

                   $("#divOffers .megamenuUL > li").removeClass('active');
                   $(this).parent().find("#divOffers ul.megasubmenu li").removeClass('active');
                   $(this).parent().find("#divOffers ul.megasubmenu li:eq(0)").addClass('active');
                   $(this).parent().addClass('active');
               });

你看,我不能用 angular 这个

jQuery 在 angular 之前加载,因此您需要延迟才能获得 jQuery 的长度,即 setInterval ..

或者您可以借助 angular 本身在以下问题的答案的帮助下完成此操作:

Calling a function when ng-repeat has finished

如果您需要在重复完成后执行一些代码并使用 length 属性.

从 GroupList 对象本身获取长度

您还可以使用 angular ng-mouseoverng-mouseleave 事件将悬停绑定到来自控制器的函数

<li ng-class="{'active':$index==0}" data-ng-repeat="cg in GroupList" ng-mouseover="hoverIn()" ng-mouseleave="hoverOut()">

还有 angular jqLit​​e,它是 jQuery 的一个微小的 API 兼容子集,它允许 Angular 在交叉中操纵 DOM - 浏览器兼容的方式。因此,您可以从事件处理中类似的 jQuery 行为中获益。

  <li ng-class="{'active':$index==0}" data-ng-repeat="cg in GroupList"  on-finish-render="ngRepeatFinished">

</li>    
$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
   //do stuff, execute functions -- whatever...
    });

谢谢!!