removeClass()在下次单击之前不会触发

时间:2015-04-16 22:32:07

标签: jquery

不确定发布代码,因为它是NDA,因此我甚至无法显示当前的开发网站,因为它仍在开发中,但基本上是什么?接下来是removeClass()在下次点击之前不能正常工作。所以,让我们说点击事件,如果你单击一个上一个未选择的项目,它会执行addClass(" active"),如果再次点击它,它会删除类(&#) 34;有源&#34)。

问题是,虽然addClass()效果立即显现(背景颜色发生变化),但只有在屏幕上的任何地方点击屏幕,才会发生removeClass()效果(还原背景颜色),但仅限于Chrome和Firefox 。在IE中,行为完全符合预期。

click事件与

绑定
$(".relevantItems").bind("click", function(){ 
    if ($(this).hasClass("active")){
        $(this).removeClass("active");
    } else{
        $(this).addClass("active");
    }
});

所以它很简单。页面上必定有一些导致这种奇怪行为的东西,但我不知道它可能是什么,因为没有其他事件与相关项目绑定。知道我应该寻找什么可能导致这种行为吗?

编辑 - 看来这只是在我的Surface Pro 3上执行此操作(Chrome和Firefox不在应用模式中,而IE则是。我将Chrome浏览器推向应用模式,看看会发生什么......但要么这仍然是个问题。)

编辑2 - 确认在办公室中的所有台式机和笔记本电脑上工作,除了Surface Pro 3上的Chrome和Firefox,即使在原生应用模式下也是如此。任何人都知道表面的标签是什么,因为这似乎是设备特定的?值得注意的是,我早先将Chrome和Firefox切换到默认应用模式浏览器可能导致了导致这种情况的表面错误,因为当我将它们从原生应用模式切换出来时,我甚至无法输入任何一个浏览器。也在iPad上工作。

编辑3 - 想出来,有点儿。这是触摸屏的行为。如果我使用Surface上的触摸板单击元素,一切都按预期工作。但是这个触摸屏问题并不会发生在iPhone或iPad上。不知道发生了什么。

编辑4 - 在另一台触摸的Windows 8.1笔记本电脑上重现了它。所以这是Windows 8.1唯一的问题,特别是Chrome和Firefox,只有当你触摸屏按钮时。奇..

2 个答案:

答案 0 :(得分:0)

想出来。不得不添加移动jQuery并添加“点击”事件。显然,对于触摸屏上的Windows 8.1,只有“点击”才会发生奇怪的事情。

答案 1 :(得分:0)

鉴于你的描述,我能做的最好的就是为你提供一个希望能产生预期效果的黑客。我们应该尝试的是在我们更改类之后强制浏览器重新呈现元素。请尝试以下代码:

$('.relevantItems').on('click', function(){ 
    $(this).toggleClass('active');
    this.offsetHeight;
});

有关解决方案click here的详细信息。