HTML jquery按钮有时不会做出反应

时间:2012-12-26 01:18:57

标签: jquery html function button

嗨,我有一些简单的按钮,有时候没有反应。它很少发生,但我仍然不喜欢它。如果您非常快速地点击或更快地更改导航,它会发生更多。这是我给他们的代码:

$(document).ready(function () { 
    $('[id*=txt]').hide();
    $('[id*=hd]').hide();                   
    $('[id*=home]').show();
    $('#btnhome').css('background-color',"#555");
    $('#btnhome').css('opacity',"0.4");

    $('.button').click(function (){
        $('[id*=txt]').hide();
        $('[id*=hd]').hide();
        $('.button').css('background',"transparent");
        $('.button').css('opacity',"1");
        $(this).css('background-color',"#555");
        $(this).css('opacity',"0.4");
   });          

    $('#btnhome').click(function () {   
        $('[id*=home]').show();             
    });     

    $('#btnabout').click(function () {              
        $('[id*=about]').show();        
    });    

    $('#btncontact').click(function () {        
        $('[id*=contact]').show();  
    });
});

它们仅用于显示和隐藏文本,它们还会在单击时更改颜色不透明度等。当他们没有反应时根本没有任何反应,好像我没有定义任何点击功能。

DEMO

^这就是我基本上使用的,尝试以随机顺序击中它们并以快速方式切换(如果你快速地执行它会发生更多)。你会发现有时他们没有反应。它有点难以注意,因为它很少发生(有时更常见)所以它一开始可能不会发生但确实会发生。所以试试好几次,你会看到我在说什么。你做得越快越随机,它就会越多。

2 个答案:

答案 0 :(得分:2)

在使用您的演示后,我注意到在每个按钮上单击某个位置时出现问题,而不是通过随机或以特定速度单击它们。最佳位置通常位于填充处按钮文本边缘的右侧。

我发现从CSS中删除.button:active{}伪类修复了这个问题,所以我的猜测是css中按钮位置的移动会干扰click事件。我的建议是将删除的CSS样式合并到click(或mousedown)事件本身而不是:active伪类中。

答案 1 :(得分:0)

我不确切知道为什么,但我认为问题是因为当你像这样使用选择器时:

 $('[id*=contact]').myFunction();

JQuery它花费更多时间来找到正确的选择器,如果他们在下次点击之前没有找到它,就不会做出反应。 有可能在复杂的页面中,充满了div和信息,可以强调故障。

对此的支持,我试图仅更改onclick回调,它似乎更好用:http://jsfiddle.net/mMF5r/7/