JQuery Switchclass
-
27-09-2019 - |
質問
元に戻すことは可能ですか? switchClass
遷移?
ゆっくりとクラスを取得してもらいたいです A
あなたがその上に浮かび、マウスが去ったらゆっくりとそれを再び失います。しかし、機能はグリッチーで、呼び出しているように見えます .stop(0,1)
助けにはならないようです。実際、それはそれを壊しているようです。
ライブの例があります ここ. 。はい、それは404ページですが、それは重要ではありません。ナビゲーションはゆっくりとクラスを獲得または失う必要がありますが、ジャンプするだけです。スクリプトを見つけることができます ここ.
そのような移行は可能ですか?
編集:
これが私が使用しているコードです:
$('#navbar li:not(.current) a').hover(function() {
$(this).parent()
.stop(1,0)
.addClass('current', 1000);
}, function () {
$(this).parent()
.stop(1,0)
.removeClass('current', 1000);
});
それはおそらく、のクラスを変更したからでしょうか li
子どもたちのスタイルが移行されていませんか?
編集2:
うん、それはそれを「固定」します。真のバグは、そのすべての栄光で観察できるようになりました(中間状態で凍結する)。
解決
これは私がそれを機能させるために来た最も近いものです:
多少の過剰なものがあるかもしれません、そしてあなたは :animated
セレクター、最初はトラブルがありました。
努力する価値がないかもしれません...
HTML
<div id='myElement' class='blue'>content</div>
CSS
div {
width: 100px;
height: 100px;
}
.blue {
background: blue;
position:relative;
left: 20px;
}
.myClass {
background:red;
margin-top: 50px;
}
jquery
var animating = false;
var interval;
$('#myElement').hover(
function() {
var $th = $(this);
if(!animating && !interval) {
$th.clearQueue();
animating = true;
$th.addClass('myClass',500,function() {animating=false;});
}
},
function() {
var $th = $(this);
if(interval) return false;
if(animating) {
interval = setInterval(function() {
if(!animating) {
$th.clearQueue();
animating = true;
$th.removeClass('myClass',500, function(){animating = false;});
clearInterval(interval);
interval = null;
}},50)
} else {
$th.clearQueue();
$th.removeClass('myClass',500, function(){animating = false;});
}
}
);
他のヒント
JQueryの何らかの形の機能を探しているようです。
$('#clickme').hover(function() {
$('#book').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 5000, function() {
// Animation complete.
});
});
そうでなければ、スイッチクラスはゆっくりと私にはあまり意味がありません
ゆっくりとクラスを取得することは意味がありません。要素には特定のクラスがあるか、そうでないかのいずれかがあり、CSSはクラスで何らかの「部分包含」を示す方法を提供しません。
編集 - @Patrickは、Jquery UIが実際にそれを少なくともある程度サポートしていることを指摘しています。エフェクトスタッフをインストールすると、クラス操作関数には期間の引数が必要です。