Jquery arka plan rengini değiştir


130

Bu örnekle jquery deniyordum:

 $(document).ready(function(){
      $("button").mouseover(function(){
        $("p#44.test").css("background-color","yellow");
        $("p#44.test").hide(1500);
        $("p#44.test").show(1500);
        $("p#44.test").css("background-color","red");
      });
    });

Aşağıdakilerin olmasını bekliyordum:

1. Color of <p> to turn yellow
2. <p> to slowly fade
3. <p> to slowly show
4. Color of <p> to turn red

Ama gerçekte olan buydu:

1. <p> turned red
2. <p> slowly hid away
3. <p> slowly showed

Neden?

Yanıtlar:


211

.css()Fonksiyon anlıktır, çalışan animasyonlar arkasında kuyruğa etmez.

Peşinde olduğunuz davranışa uymak için aşağıdakileri yapmanız gerekir:

$(document).ready(function() {
  $("button").mouseover(function() {
    var p = $("p#44.test").css("background-color", "yellow");
    p.hide(1500).show(1500);
    p.queue(function() {
      p.css("background-color", "red");
    });
  });
});

.queue()Tükenmeye animasyonlar çalıştırmak için fonksiyon bekler ve sağlanan işlevi ne varsa o patlar.


20

Nasıl olması gerektiği şu:

Kod:

$(function(){
  $("button").mouseover(function(){
    var $p = $("#P44");
    $p.stop()
      .css("background-color","yellow")
      .hide(1500, function() {
          $p.css("background-color","red")
            .show(1500);
      });
  });
});

Demo: http://jsfiddle.net/p7w9W/2/

Açıklama:

Arka plan rengini değiştirmeden önce animasyon işlevlerinde geri aramayı beklemelisiniz. Ayrıca yalnızca sayısal kimlikler kullanmamalısınız ve kimliğiniz varsa<p> orada , seçicinize bir sınıf eklememelisiniz.

Ayrıca kodunuzu geliştirdim (jQuery nesnesinin önbelleğe alınması, zincirleme vb.)

Güncelleme: VKolev tarafından önerildiği gibi , öğe gizlendiğinde renk artık değişiyor.


$ P.css ("arka plan rengi", "kırmızı"); $ p.show'dan önce, p-içeriğini tekrar gösterdikten sonra göz kırpma efekti olmadan biraz daha güzel hale getirecek.
VKolev

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.