当鼠标指针位于下面屏幕截图中显示的位置时,为什么我的按钮的点击事件没有注册?我已经创建了一个jsFiddle来测试它。请务必查看浏览器的控制台以获取反馈。
这是我的代码,我正在使用jQuery
var clickCounter = 0;
$('button').click(function(){
clickCounter++;
console.log('times clicked: ' + clickCounter);
});
答案 0 :(得分:6)
这个问题是点击是mousedown + mouseup。当您单击该区域时,您位于mousedown上的子元素的一部分中,但是在mouseup上,您位于父元素的部分中,因此没有元素获得完整的单击。不知道解决问题的最佳方法是什么,但这就是问题所在。
.logInBtn:active{
/*top:2.2em;*/
}
随着它被注释掉它的作用。
答案 1 :(得分:2)
我认为Dave explained the problem well您正在将元素移动到其活动状态,将元素移动到活动状态会导致mousedown转到一个元素并且mouseup转到另一个元素,因此,单击是没有触发,因为如果mouseup和mousedown在同一个元素上,操作系统只会触发一次点击。
I think the best solution is to simplify your code a lot,让按钮处理活动状态,您的样式会影响按钮的活动外观。以下CSS / HTML仍然具有活动外观,并且不会从鼠标下移动按钮,从UX角度来看这是一个坏主意。
<button id="signUpLogIn-logInBtn" class="logInBtn">
<img src= "http://s10.postimg.org/z9yrvulut/log_In_Icon.png"/>
Add One<p class="logInBtnSub">See Console</p>
</button>
.logInBtn {
font-size: 1.4em;
text-transform: uppercase;
font-weight: 700;
background-color: #c6c6c6;
box-shadow: 0 8px #878787;
border-radius: 10px;
color: #402a3e;
cursor: pointer;
text-align: center;
}
.logInBtn img {
width: 50px;
height: 50px;
display: block;
margin: auto;
}
.logInBtnSub{
font-size: 0.6em;
color: #878787;
}
以下是一些解决方法
pointer-events: none
for elements within the button这适用于我测试IE9,FF和Chrome的最新浏览器(信用到vals)