0

我正在ul-li使用 angular 制作列表ng-repeat。但是DOMReady我想要生成的列表的总长度,并且我想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');
               });

你看,我不能为此使用角度

4

2 回答 2

0

jQuery 在 Angular 之前加载,因此您需要延迟才能使用 jQuery 获取长度,即setInterval..

或者,您可以借助以下问题的答案对 Angular 本身进行此操作:

ng-repeat 完成时调用函数

如果您需要在重复完成后执行一些代码并使用length属性从 GroupList 对象本身获取长度。

您还可以使用角度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 行为中受益。

于 2015-09-29T13:49:16.280 回答
0
  <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...
    });

谢谢 !!

于 2015-09-29T14:04:55.593 回答