2009-07-28 22 views
12

Bir hesap yönetim sayfasında ayarları ve seçenekleri içeren bir div var.jQuery geçiş ve IF görünürse

$("#moreOptions").slideToggle('slow'); 
if ($("#moreOptions").is(":visible") == true) { 
    $("#lnkMoreOpt").text("Less Options «") 
} 
else { 
    $("#lnkMoreOpt").text("More Options »") 
} 

Yukarıdaki kod ancak jQuery görünür/görünmez yapma gibi geçiş tedavi etmez görünür, görünür olup olmadığına bağlı olarak fazla/az seçenek bağlantının metni değiştirmek gerekir.

Bunu, açma/kapama işlevini kullanırken de nasıl uygularım?

+0

çalışacağını düşünüyorum ama başka bir seçenek muhtemelen geçiş öğesini başlatmadan önce değerini kontrol etmek olacaktır. – eselk

cevap

33

Geri arama işlevini kullanmanız gerekir. If ifadesi değerlendirildiğinde, slideToggle tamamlanamayacak ve yanlış sonuçlar alacaksınız. Bir fonksiyon iki kez kullanılması gereken vermediğinde çünkü ayrı işlevleri kullanmamayı tercih

$("#moreOptions").slideToggle('slow', callbackFn); 

function callbackFn(){ 

    var $link = $("#lnkMoreOpt"); 

    $(this).is(":visible") ? $link.text("Less Options «") : $link.text("More Options »"); 


} 
+0

Mükemmel cevap, harika çalışıyor! Teşekkür ederim. – j82374823749

+0

Endişelenme, onunla iyi şanslar. – redsquare

1

, bu .. ben bu birisi geldiğinde anlamak daha kolay olduğuna inanıyoruz ..

kod kaybıdır
$("#moreOptions").slideToggle('slow', function(){ 
    var $link = $("#lnkMoreOpt"); 
    $(this).is(":visible") ? $link.text("Less Options «") : $link.text("More Options »"); 
}); 
0

Ben bu kod Bu eski olduğunu biliyorum

$('#element').toggle('slow', function() { 
    if($(this).is(':hidden')) { 
     $(this).text('This element is hidden.'); 
    } 
    else { 
     $(this).text('This element is visible.'); 
    } 
});