0

こんにちは私は時々反応しないいくつかの簡単なボタンを持っています。それはめったに起こりませんが、私はまだそれが好きではありません。クリックを非常に速くしたり、ナビゲーションを非常に速く変更したりすると、さらに多くのことが起こります。これは私が彼らのために持っているコードです:

$(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();  
    });
});

これらはテキストの表示と非表示にのみ使用され、クリックすると色の不透明度なども変更されます。彼らが反応しないときは、クリック機能が定義されていないかのように、何も起こりません。

デモ

^これは私が基本的に使用しているものです。ランダムな順序でそれらをヒットし、高速に切り替えてみてください(高速に実行するとさらに発生します)。時々彼らが反応しないことがわかるでしょう。それはめったに起こらないので(時にはもっと頻繁に)気付くのが少し難しいので、おそらく最初は起こらないでしょうが、確かに起こります。ですから、何度か試してみると、私が話していることがわかります。あなたがそれをより速くそしてランダムに行うほど、それはより多く起こります。

4

2 に答える 2

2

デモを試してみたところ、ランダムにクリックしたり、特定の速度でクリックしたりするのではなく、各ボタンの特定の場所をクリックしたときに問題が発生していることに気付きました。スイートスポットは通常、パディングのボタンテキストの端の右側にあります。

.button:active{}CSSから疑似クラスを削除すると問題が解決することがわかったので、css内のボタンの位置のシフトがクリックイベントの妨げになっていると思います。私の提案は、削除されたCSSスタイルを疑似クラスではなくクリック(またはマウスダウン)イベント自体に組み込むこと:activeです。

于 2012-12-26T01:59:36.177 に答える
0

正確な理由はわかりませんが、次のようなセレクターを使用すると問題が発生すると思います。

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

JQueryは、適切なセレクターを見つけるためにより多くの時間を費やし、次のクリックの前にそれが見つからなかった場合は反応しません。divと情報でいっぱいの複雑なページでは、誤動作が強調される可能性があります。

これをサポートするために、onclickコールバックのみを変更しようとしましたが、うまく機能しているようです:http: //jsfiddle.net/mMF5r/7/

于 2012-12-26T01:42:31.627 に答える