我有一个点击事件表行,在这一行也有一个删除按钮点击事件。当我单击删除按钮时,行上的单击事件也会被触发。
这是我的代码。
html prettyprint-override"><tbody>
<tr ng-repeat="user in users" class="repeat-animation" ng-click="showUser(user, $index)">
<td>{{user.firstname}}</td>
<td>{{user.lastname}}</td>
<td>{{user.email}}</td>
<td><button class="btn red btn-sm" ng-click="deleteUser(user.id, $index)">Delete</button></td>
</tr>
</tbody>
当我单击表格单元格中的删除按钮时,如何防止触发showUser
事件?
我写了一个指令,让你限制点击有效果的区域。它可以用于像这样的特定场景,所以不必逐个处理点击,你可以说“点击不会来自这个元素”。
你会这样使用它:
<table>
<tr ng-repeat="user in users" ng-click="showUser(user)">
<td>{{user.firstname}}</td>
<td>{{user.lastname}}</td>
<td isolate-click>
<button class="btn" ng-click="deleteUser(user.id, $index);">
Delete
</button>
</td>
</tr>
</table>
请记住,这将阻止所有点击最后一个单元格,而不仅仅是按钮。如果这不是您想要的,您可能希望像这样包装按钮:
<span isolate-click>
<button class="btn" ng-click="deleteUser(user.id, $index);">
Delete
</button>
</span>
以下是指令代码:
angular.module('awesome', []).directive('isolateClick', function() {
return {
link: function(scope, elem) {
elem.on('click', function(e){
e.stopPropagation();
});
}
};
});
斯图伊回答的补充。如果您的回调决定是否应该停止传播,我发现将$event
对象传递给回调很有用:
<div ng-click="parentHandler($event)">
<div ng-click="childHandler($event)">
</div>
</div>
然后在回调本身中,您可以决定是否应停止事件的传播:
$scope.childHandler = function ($event) {
if (wanna_stop_it()) {
$event.stopPropagation();
}
...
};
ngclick指令(以及所有其他事件指令)创建在同一作用域上可用的$event
变量。这个变量是对JS事件
对象的引用,可以用来调用停止传播()
:
<table>
<tr ng-repeat="user in users" ng-click="showUser(user)">
<td>{{user.firstname}}</td>
<td>{{user.lastname}}</td>
<td>
<button class="btn" ng-click="deleteUser(user.id, $index); $event.stopPropagation();">
Delete
</button>
</td>
</tr>
</table>
PLUNKER
如果孩子在焦点中(已被点击),我怎么能失去父母的悬停状态?我有一个菜单箭头(用OPEN代替了它,以减少代码),它在悬停状态下打开我的菜单和菜单项,当我单击它们时,菜单项就会聚焦。在菜单项点击后,我希望能够失去对我父母的关注,这样菜单就会消失。 如果可能的话,我会尽量避免使用javascript,这是我最好的尝试... 这是我的html null null 编辑 我在一个单页应用程序上使用Angul
在执行此代码时,我会得到这样的错误:“Uncattle TypeError:Failed to execute'linear ramptoValueAtTime'on'AudioParam':The provided double value is non-finite”。 &如果替换ac.endTime只是endTime-“endTime未定义”,则发生错误。也许有人能解释为什么会这样?谢谢
问题内容: 我正在尝试用我的程序解决一个奇怪的问题。该程序创建了一系列GUI和JTable,使用户能够生成XML文件。这些表之一是用于创建“语句”的。除了要说的是数据存储在多个2D数组中,这些2D数组又存储在哈希映射中之外,我将不做详细介绍。 这是发生了什么。当用户进入Statement屏幕时,将使用2D数组中的内容生成JTable。此数据填充用户能够修改的单元格。这些单元格之一(也是最重要的)是
问题内容: 我必须在鼠标移动时画线,单击鼠标后,应该继续画线,直到双击为止。说点A,点B和点C。在点A上单击鼠标时,应开始画线。当在B点上单击鼠标时,除非双击,否则上一条线应该与新线一起从B点开始绘制。C点应相同,依此类推,直到双击鼠标为止。经过研究,我编写了下面的代码,它工作得很好,但是它可以用于拖动NOT MOUSE MOVE事件,我试图将代码转移到mouseMoved事件,但是上一行消失了。
我正在尝试处理用户的Backspace按键。我有2个处理程序绑定到一个输入元素。由于无法在onChange事件处理程序中检测按键,因此我必须在onKeyDown中进行。我想在按下backspace时停止onChange事件的传播(并在onKeyDown事件处理程序中处理)。有什么想法如何实现这一点?谢谢!
我在一个div中有一个twitter引导下拉列表,其中有一个插件jOrgChart。 我遇到的问题是,当我单击按钮打开下拉菜单时,它还会在父div中触发一个click事件,该事件会折叠其他元素。 这是我的html: 我想防止.dropdown-toggle的点击冒泡到div.node,我尝试了以下方法: 但是现在下拉菜单不起作用了。 编辑 具体情况如下:http://jsfiddle.net/UT