我使用的按钮在点击时会向下移动。
.button:active {
position: relative;
top: 2px;
}
我遇到的问题是用户偶尔会点击按钮顶部的正确位置,或者只是在按钮边框的下方或上方。 当点击下降时,按钮向下移动,光标不再在按钮上方。因此,实际上没有注册点击。 我用小提琴复制了这个:
如果单击按钮顶部的右边缘,则按钮会移动,但不会触发click事件处理程序。我在IE,Firefox,Chrome中看到了这种行为。
我该如何解决这个问题?
答案 0 :(得分:1)
我会将按钮放在div中并在div上添加事件,这样您就可以保持效果而不会使代码过于复杂。
另一种方法是处理mousedown和mouseup事件并检查光标位置是否已更改
答案 1 :(得分:1)
基本click()
事件受到:active
状态移动对象的干扰。
顺便说一下,你的解决方案与那个答案略有不同;
从@cdanisor提出的解决方案开始,您需要使用mouseup()
(为了保留按钮的移动效果并仅在释放鼠标时触发事件)
<div id="alertMe">
<div class="button red"> test</div>
</div>
$("#alertMe").mouseup(function() {
alert("Handler for .click() called.");
});
修改强>
显然,您可以使用button
代替div
来保留键盘兼容性,并将相同的功能绑定到keyup
事件:
演示:http://jsfiddle.net/kEQjU/1/
<div id="alertMe">
<input type="button" class="button red" value="test" />
</div>
$("#alertMe").mouseup(function() {
alert("Handler for .click() called.");
});
$("#alertMe").keyup(function() {
alert("Handler for .click() called.");
});