【发布时间】:2013-01-10 18:29:47
【问题描述】:
我正在尝试“stopPropagation”以防止在单击 li 内的元素(链接)时关闭 Twitter Bootstrap 导航栏下拉菜单。使用这种方法似乎是常见的solution。
在 Angular 中,似乎指令是执行此操作的地方?所以我有:
// do not close dropdown on click
directives.directive('stopPropagation', function () {
return {
link:function (elm) {
$(elm).click(function (event) {
event.stopPropagation();
});
}
};
});
...但是方法不属于元素:
TypeError: Object [object Object] has no method 'stopPropagation'
我将指令与
联系起来<li ng-repeat="foo in bar">
<div>
{{foo.text}}<a stop-propagation ng-click="doThing($index)">clickme</a>
</div>
</li>
有什么建议吗?
【问题讨论】:
-
你应该在标签中为javascript(甚至jquery)腾出一些空间。
-
好建议。进行了编辑。
-
event.stopPropagation()在您的代码中不起作用的原因是 AngularJS 和 jQuery 有两个独立的事件循环。这就是为什么同时使用它们通常是个坏主意的原因之一。您使用ngClick定义的点击事件使用 Angular,但您正尝试使用 jQuery 来停止事件传播。
标签: javascript jquery angularjs stoppropagation