为啥切换效果不适用于使用角度指令的嵌套 div

Posted

技术标签:

【中文标题】为啥切换效果不适用于使用角度指令的嵌套 div【英文标题】: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');
    );
 );

【问题讨论】:

【参考方案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');
    );
  );
);

【讨论】:

以上是关于为啥切换效果不适用于使用角度指令的嵌套 div的主要内容,如果未能解决你的问题,请参考以下文章

IE输入元素焦点不适用于角度指令

Flex-end 不适用于显示 flex 的 div 内的按钮

QMenu mousePressEvent 阻碍了 QAction 切换

角度计时器指令不适用于离子框架

为啥这种“嵌套连接”适用于 PDO 而不适用于 MySql cli?

jQuery怎么实现tab页切换效果