2009-07-28 4 views
12

私には、アカウント管理ページの設定とオプションを含むdivがあります。jQueryの切り替えとIFの表示

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

上記のコードは、それが表示されているかどうかに応じて、より多く/少なくオプションリンクのテキストを変更する必要があります、しかし、jQueryのは、それが見えない/見え作るようトグル扱いません表示されます。

トグル機能を使用してこれを実装するにはどうすればよいですか?

+0

私はこれが古いですけど、別のオプションは、おそらくあなたがトグルを開始する前に値をチェックすることですが仕事だと思います。 – eselk

答えて

33

コールバック関数を使用する必要があります。 if文が評価されるまでにslideToggleは完了せず、不正な結果が得られます。私は1つの関数を2回使用する必要がないときので、別々の機能を使用しない

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

function callbackFn(){ 

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

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


} 
+0

優れた答えは、素晴らしい作品!ありがとうございました。 – j82374823749

+0

心配はありません。幸いです。 – redsquare

1

、それは..私はこれが誰かがそれに来るときを理解することが容易であると考えている。..

コードの無駄です
$("#moreOptions").slideToggle('slow', function(){ 
    var $link = $("#lnkMoreOpt"); 
    $(this).is(":visible") ? $link.text("Less Options «") : $link.text("More Options »"); 
}); 
0

私はこのコードが

$('#element').toggle('slow', function() { 
    if($(this).is(':hidden')) { 
     $(this).text('This element is hidden.'); 
    } 
    else { 
     $(this).text('This element is visible.'); 
    } 
}); 
関連する問題