【问题标题】:Why toggle effect not working for nested div using angular Directive为什么切换效果不适用于使用角度指令的嵌套 div
【发布时间】:2016-05-04 17:16:43
【问题描述】:
我已附上Plunker。我无法访问 .gc 和 .mc 元素。虽然我的代码部分工作并且.bc 类按预期工作。我正在尝试对它们和层次结构应用切换效果
BroadCategory > GeneralCategory > MainCategory
不知道我错过了什么
$(element).find('.gc').click( function() {
alert('GC');
$(element).find(".mc").slideToggle('200',function() {
$(element).find("span").toggleClass('faqPlus faqMinus');
});
});
【问题讨论】:
标签:
javascript
jquery
angularjs
angular-directive
【解决方案1】:
当 Angular 链接 BroadCategory div 时,尚未创建 GeneralCategory (ng-repeat) 元素。所以永远不会添加点击处理程序。
将 d-expand-collapse 属性添加到 .gc 元素。然后,您应该会看到您的点击警报触发。
<div d-expand-collapse ng-repeat="gen in group.items">
【解决方案2】:
在创建.gc 元素的ng-repeat 之前调用您的函数。一个快速的解决方法是将函数包装在超时中以让它完成渲染。我确信有更好的方法使用一些角度钩子,但这会完成你想要的。
setTimeout(function () {
$(element).find('.gc').click( function() {
alert('GC');
$(element).find(".mc").slideToggle('200',function() {
$(element).find("span").toggleClass('faqPlus faqMinus');
});
});
});