2012-02-16 3 views
4

100x100ボックスの赤い背景を切り替えるためにjQuery UI .toggleClass(クラス、[期間])を使用していますが、結果が奇妙です。参考までにhttp://jqueryui.com/docs/toggleClass/を参照してください。jQueryのUI toggleClassの動作時間が変わっています

ますが、この例からもわかるように - http://jsfiddle.net/xkrX9/ - のdiv#ボックスに最初クリックすると、(任意の[期間]なし)、すぐに赤い背景を切り替えた後、第2クリックせずに約1秒後に戻って白に再びそれをトグルイベント。 の2番目の(ページを再ロードせずに)をクリックすると、.redクラスが1000msの持続時間で期待通りにトグルされます。

ここで何が問題になりますか?どんな洞察もありがとう!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 

<style> 
    #box { width: 100px; height: 100px; border: 1px solid #999; } 
    .red { background: red; } 
</style> 

<div id="box"></div> 

<script> 
    $('#box').click(function() { 
     $(this).toggleClass('red', 1000); 
    }); 
</script> 

答えて

2

これはバグのようです。何のクラスが存在しない場合、それは動作しません属性が、あなたはノードへのクラスattibuteを追加したら、それは正常に動作し、

http://jsfiddle.net/xkrX9/3/

私は、バグレポートを提出します。

のjQuery UI Bug #8113

+0

パーフェクト、これは質問に答えます。 Andrewを解説してくれてありがとう! – klicks

+0

ありがとうございます。私はCSSの「国境」も同様のやり方で行動することを知っています。 jQueryのバグですか? – maan81

+0

@ maan81 jQuery UIのバグ、つまりanimateClass関数のように見えます。 'this.attr( 'class')'と 'this.attr( 'style')'呼び出しを多くします。これが最も有力な原因です。 – Andrew