javascript - Button 上的 MouseDown 使其隐藏,MouseUp 使其可见
问题描述
我在页面上有一个按钮:
<input id="PauseMe" type="image" src="pauseButton.png">
我想为 MouseUp 和 MouseDown 的按钮添加两个函数,这将导致按钮在 MouseDown 事件发生时变为“不可见”,并在 MouseUp 事件发生时返回“可见”。
我已经按照另一个stackoverflow添加:
jQuery.fn.visible = function() {
return this.css('visibility', 'visible');
};
jQuery.fn.invisible = function() {
return this.css('visibility', 'hidden');
};
然后我使用以下代码调用它:
$( "#PauseMe" ).mousedown(function() {
$('#PauseMe').invisible();
});
$( "#PauseMe" ).mouseup(function() {
$('#PauseMe').visible();
});
不幸的是,一旦触发 mousedown 事件,我似乎无法触发 mouseup 事件。
对于上下文,我有一个按钮所在的背景图像,当鼠标下降并使按钮不可见时,按钮现在看起来是背景图像的一部分,而当鼠标上升时它看起来很正常。我已经在另一个站点上看到了这个工作,但是除了直接添加和删除类到按钮而不是直接添加 CSS 属性之外,我无法很好地查看他们的源代码以了解他们是如何管理它的。
解决方案
使用 CSS:active
伪选择器
#PauseMe:active {
visibility: hidden;
}
<input id="PauseMe" type="image" src="//placehold.it/50x50/0bf">
:active
似乎是一个更好的解决方案,因为动作元素可以在选项卡上变为活动状态(通常不仅在单击或鼠标事件上)。
显示和可见性问题:
Tl;博士:使用opacity
。
如果元素得到display: none
或,则元素将阻止您注册 mouseup 事件(也适用于 Click 事件中的 mouseup) visibility: hidden
。
为了达到同样的效果,但保持事件冒泡 -使用 CSSopacity
代替:
jQuery.fn.visible = function() {
return this.css('opacity', '1');
};
jQuery.fn.invisible = function() {
return this.css('opacity', '0');
};
$("#PauseMe").on({
mousedown() {
$(this).invisible();
},
mouseup() {
$(this).visible();
}
});
<input id="PauseMe" type="image" src="//placehold.it/50x50/0bf">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
推荐阅读
- python - 如何在 django 的管理模板中调用自定义方法
- bootstrap-4 - 具有可变列长度的boostrap div
- javascript - 以固定步长移动元素
- adfs - 在 Windows 窗体上显示用户名
- soap - 如何从 URL 触发 BluePrism 的可见 Web 服务?
- amazon-web-services - 无法使用 Kong Ingress Controller 后面的 keycloak 访问管理控制台页面
- c++ - 我看不到 boost::interprocess 通过 shell 命令 ipcs 创建的共享内存
- json - 如何使用此 JSON 文件中的键创建 Pandas DataFrame?
- java - 如何修复 Spring3.2 中的“无法构建架构”错误?
- c# - 使用字典或单独绑定模型中的每个变量是否更好(描述中更详细)