鼠标按下后单击事件,鼠标向上事件不会发生
Click event following mousedown and mouseup events won't occur
我想要以下行为。
- "Foo"显示在浏览器上。
- 如果您在"Foo"上按下鼠标按钮,将显示"Foo"的"栏"。
- 如果您松开按钮,"酒吧"将再次显示"Foo"。
- 最后,"您好"显示在警报框中。
我编写了以下代码,但最后一步从未发生。似乎 .hide(( 方法正在阻止点击事件的发生。 有什么想法要解决吗?
<body>
<div id="parent">
<div id="foo">Foo</div>
<div id="bar">Bar</div>
</div>
<script>
$(function(){
$("#foo").show();
$("#bar").hide();
$("#parent").mousedown(function(){
$("#foo").hide();
$("#bar").show();
});
$("#parent").mouseup(function(){
$("#foo").show();
$("#bar").hide();
});
$("#parent").click(function(){
alert("Hello");
});
})
</script>
</body>
当
mousedown
和mouseup
事件同时发生时,会发生click
事件。您可以在mouseup
末尾附加用于click
的代码
$("#parent").mouseup(function(){
$("#foo").show();
$("#bar").hide();
alert("Hello");
});
- "foo"显示在浏览器上。
- 如果您按下"Foo"上的鼠标按钮,将显示"bar"为"foo"。
- 如果您松开按钮,"bar"将再次显示"foo"。
- 最后,警报框中显示"您好"。
你所说的"终于"有些含糊不清。但是,一种解决方案是在从 #foo
触发每个mousedown
事件后向 window
对象添加一个事件侦听器。然后,您可以在侦听器回调函数结束时删除侦听器,从而产生"仅触发一次"设计。
on_mouseup_fn = function(e) {
//Third condition
$('#foo').show();
$('#bar').hide();
//Fourth condition
alert("Hello!");
$(window).off('mouseup', on_mouseup_fn);
}
$(document).ready(function() {
//First condition
$('#bar').hide()
$('#foo').on('mousedown', function(e) {
//Second condition
$(e.currentTarget).hide();
$('#bar').show();
//For third and fourth conditions
$(window).on('mouseup', on_mouseup_fn);
});
});
这是一个功能性的jsFiddle演示。如果我误解了您想要的元素行为,请告诉我。
http://jsfiddle.net/n9GcS/8/
相关文章:
- JsFiddle上的鼠标事件不起作用
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- node-webkit-从父窗口捕获iframe鼠标事件
- 如何在jquery中找到鼠标滚轮/触摸移动事件的走向
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 鼠标事件在OpenLaszlo应用程序中不起作用
- 为画布绘图添加鼠标事件
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- KineticJS鼠标事件问题
- 捕获鼠标关闭事件并在 Mozilla 中获取 clientX 和 clientY
- D3.js:如何在svg上移动鼠标时创建弹出事件
- 如果鼠标在元素上快速移动和关闭,则防止.hoop事件被垃圾邮件发送
- 如何在asp:linkButton上显示鼠标悬停事件上的图像
- GWT-允许鼠标事件在两个叠加画布之间传播
- 为什么不是't html<对象>元素响应鼠标事件
- 如何恢复Kinetic.js鼠标事件
- 鼠标事件's在CtrlKey不起作用的情况下单击
- 必须更改单击事件鼠标输入鼠标输出事件
- 当一个标记位于打开的infobox -事件鼠标悬停与infobox插件谷歌地图API v3
- 带有按钮的鼠标事件:鼠标悬停、onclick、静态