编写一些拖放代码,我想在我的mouseup处理程序中取消单击事件.我认为防止默认应该做的伎俩,但点击事件仍然被触发.
有没有办法做到这一点?
这不起作用:
<div id="test">test</div>
<script>
$("#test").mouseup (function (e) {
var a = 1;
e.preventDefault();
});
$("#test").click (function (e) {
var a = 2;
});
Run Code Online (Sandbox Code Playgroud) 我找不到任何答案,所以我在这里问.目前我没有任何触摸设备,所以我无法测试它.
如果在容器外部单击,则以下代码会隐藏容器中的所有子容器.
$(document).mouseup(function(e) {
var container = $('#container');
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
$('.subcontainer').hide();
}
});
Run Code Online (Sandbox Code Playgroud)
这是否适用于触摸设备或触摸设备的等效mouseup设备?
我有上触发功能的元件ng-mousedown和ng-mouseup.但是,它在触摸屏上不起作用,是否有任何指令ng-touchstart和ng-touchend?
一些javascript如何告诉窗口鼠标按钮已被释放?由于跨域iframe,mouseup事件正在丢失.我可以发现问题已经发生,但我不知道该怎么做才能治愈它.如果我可以强制鼠标指针位置,问题就会消失; 但是不允许javascript更改鼠标指针位置.如果我能"点击鼠标"那么问题就会消失,因为它会取代丢失的鼠标事件; 但在新的mouseup事件上使用dispatchEvent什么都不做.
mouseup通过在iframe文档中附加alert()鼠标来证明事实确实是丢失的事件body.如果在指针位于iframe内部时释放鼠标按钮,则会发出警报; 如果在指针位于iframe之外时释放鼠标按钮,则不会发生这种情况.我再次强调,只有CHROME有这种行为.在Firefox,Edge或IE中执行完全相同的操作,无论鼠标指针在何处,都会立即检测到鼠标按钮释放.
通过将事件处理程序附加到<body>外部文档中,我可以捕获鼠标.然后我可以使用标准的postMessage技术告诉内部iframe窗口发生了mouseup.内部iframe知道在拖动过程中哪个元素处于活动状态,所以这很好.但是,在实际模拟mouseup事件时,我没有任何运气.我在这里试过这个triggerMouseEvent技术.它运行没有错误,但它显然没有做任何事情.这里的演示具有上面的最小示例,以及在外部文档中捕获mouseup的管道,将消息发布到内部文档,并调用:Demo2triggerMouseEvent
在尝试创建最小的示例时,我发现可能以某种方式涉及框模型.Demo1a与上面的demo1相同,只是iframe元素的高度为710px而不是700px.在我的测试机器上, …
我有一个场景,我隐藏Div块,如果我点击div块的任何一侧.
我正在使用Internet Explorer并测试应用程序.如果没有滚动条我的代码工作正常.如果在div块上有一个滚动条,那么当我单击滚动条时,它会认为滚动条不是div的一部分,它会隐藏div块.我试图保持div块打开,即使用户点击滚动条并进行滚动操作.
var $container = $(".toolbarBlock");
$(document).mouseup(function (e) {
if (!$container.is(e.target) // if the target of the click isn't the container...
&& $container.has(e.target).length === 0) // ... nor a descendant of the container
{
toolbarClose();
}
});
function toolbarClose() {
return $.when(slideOut($container));
}
Run Code Online (Sandbox Code Playgroud) 看到这个jsfiddle:
单击并按住按钮,拖动按钮并释放.如您所见,当释放鼠标按钮时,如果鼠标未在元素上,则mouseup事件永远不会触发.因此,我的示例中的样式永远不会改变回原来的样式.如果在没有点击元素的情况下释放鼠标按钮,如何触发mouseup事件?
编辑1:BTW我已经在这个网站上看了几个解决方案,实现了它们,而且mouseup事件仍然没有触发.
在Javascript中,当我单击滚动条(页面中显示的任何滚动条)并将鼠标悬停在图像上时,图像将再次开始拖动.
图像应该只在鼠标按钮状态下拖动.
所以我试图通过了解鼠标按钮状态(mousedown或mouseup)来解决这个问题
此问题仅存在于IE和Chrome中,而不是我尝试过的其他浏览器中.
使用Javascript:
document.onmousemove = mouseMove;
document.onmousedown = mouseDown;
document.onmouseup = mouseUp;
function mouseMove(ev) {
var mouseButtonState;
// put code here to get mouseButtonState variable
console.log('state of mouse is'+mouseButtonState);
}
Run Code Online (Sandbox Code Playgroud)
当我移动鼠标时,程序应显示所需的mouseButtonState 向上或向下值
我如何知道鼠标按钮的当前状态?
javascript internet-explorer google-chrome mouseup mousedown
我正在尝试做一个简单的拖动脚本.这个想法是在鼠标停止时保存位置,在鼠标移动时更新视图,在鼠标移动时停止.问题,mouseup事件无法正常工作.
看代码:
var target = $('a')
var pos = 0;
var dragging = false;
$(document).mousedown(function(e) { pos=e.pageX; dragging = true })
$(document).mouseup(function() { dragging = false })
$(document).mousemove(function(e) {
if(dragging){
target.css('left', e.pageX-pos);
}
}) ?
Run Code Online (Sandbox Code Playgroud)
为什么mouseup与"a"标签一起使用:http: //jsfiddle.net/leyou/c3TrG/1/
为什么mouseup无法使用"img"标记:http: //jsfiddle.net/leyou/eNwzv/
只是尝试水平拖动它们.
ie9,ff和chrome也有同样的问题.Windows 7的
我有一个图表应用程序,其中我使用Backbone.js为图表图像的不同"区域"上的鼠标和双击事件附加单独的处理程序.
我需要使用mouseup来检测用户是否在图表图像的"区域"部分单击了左键或右键,这取决于我是否重定向流程.此外,我需要双击放大或最小化包含图表图像的面板.
这是问题..由于每次双击都隐式调用mouseup,我的最大化/最小化功能会干扰左/右按钮单击功能.
我尝试使用各种技术,如超时检查是否单击鼠标后跟双击(如下面的线程所示: 当检测到双击事件时需要取消单击/鼠标事件
它对我不起作用.此外,我有不同的视图对象包含同一页面上的图表,所以我附加了每个事件处理程序的唯一ID来区分它们我还尝试了简单的标志设置重置方法来检测双击并防止鼠标,如果双击发生,但从事件层次结构鼠标在双击之前发生,也失败了.
总而言之,请帮忙!提前致谢
我试图检测鼠标(释放鼠标按钮)何时发生在触发mousedown事件的元素之外.我有几个按钮,我改变CSS(通过使用类)与mousedown(按下按钮)和完成点击(mousedown + mouseup).问题是,如果单击元素,则释放元素外部的鼠标按钮,鼠标按钮不会触发.我还尝试在文档上捕获一般的"mouseup"事件,以"重置"分配给元素的类,这似乎也不起作用.
以下是HTML示例:
<div class="qbuttons">
<a id="qb_appointments" href="#" class="appointments"><div>
Schedule a Service<br />
Appointment</div></a>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我用来摆弄元素的jQuery:
var current_qbutton = "";
$('.qbuttons a').mousedown(function() {
current_qbutton = $(this).attr('id');
$(this).addClass('active');
});
$('.qbuttons a').click(function() {
$(this).removeClass('active');
});
$('*').mouseup(function(event) {
event.stopPropagation();
alert(current_qbutton);
if(current_qbutton != "") {
$('#' + current_qbutton).removeClass('active');
current_qbutton = "";
}
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试了不同的鼠标选择器 - 文档,窗口,'body*','html '和' ' - 从我看到的东西看起来鼠标在释放鼠标按钮之外没有触发mousedown元素,因为警报不会发生.
mouseup ×10
jquery ×7
javascript ×4
mousedown ×3
click ×2
angularjs ×1
backbone.js ×1
chromium ×1
css ×1
double-click ×1
drag ×1
iframe ×1
scrollbar ×1
touchstart ×1