我的页面就是这样建的:
<table>
<thead>
<tr>
<th>
Test
<div class="drag"/>
</th>
<th>
......
......
</th>
</tr>
</thead>
</table>.drag {
position: absolute;
right: 0;
bottom: 0;
top: 0;
background-color: yellow;
width: 3px;
}这样做的目的是在<div class="drag"/>上拖拽带有mousedown/mouseup事件的my列的宽度,它工作得很好。但是我的<th>-elements上也有一个点击事件。问题是,当我仍然在<th>上释放鼠标时,<th>触发器的单击事件仍然存在。
我试过几件事:
还有其他方法来防止单击事件吗?
编辑:,我仍然希望将单击事件保留在<th>上,但是我不希望它在我拖动之后启动。
发布于 2015-05-05 15:27:16
你试过吗
event.stopImmediatePropagation(); 这将调用stopPropagation,但也会阻止同一元素中的其他处理程序接收事件。
http://api.jquery.com/event.stopimmediatepropagation/
发布于 2015-05-05 15:06:53
$('th').click(function(e){
e.preventDefault();
}发布于 2015-05-05 15:14:35
您可以在拖动启动时设置一个标志变量(ondragstart),然后在其结束时(ondragend)取消它,并且onclick将被包装在一个检查该标志的if条件中。
这样的东西(您需要调整它以适应您的代码):
var dragndrop = false;
$(".drag").on("dragstart", function(e) {
dragndrop = true;
// ...code here if needed...
});
$(".drag").on("dragend", function(e) {
dragndrop = false;
e.preventDefault();
// ...code here if needed...
});
$("th").on("click", function() {
if (!dragndrop) {
// ... your code here
}
});https://stackoverflow.com/questions/30056647
复制相似问题