2010-08-12 56 views
3

我想製作一個腳本,根據其他元素的可見性更改切換鏈接文本。jQuery文本()更改toggle()?

因此,雖然#form是可見的,我希望#表單容器的文本是「隱藏...」,而當它隱藏,我希望文本是「顯示...」。 ($('#form')。is(「:visible」)){另一種方式:if($('#form')。is(「:visible」))我試過這行 - if($ ==「true」){ - 但它也不起作用。

怎麼了?每當另一個項目被切換時如何更改文本?

$('.toggle').click(
    function() 
    { 
     $('#form').slideToggle(); 

      if($('#form').is(":visible")){ 
       $('#form-container a').text("Hide form container"); 
      } 
      else { 
       $('#form-container a').text("Show form container"); 
      } 
    }); 

謝謝。

回答

0

您可以使用表單元素上的切換。

$("#form").slideToggle(
    function() { 
    //Hide 
    }, 
    function() { 
    //Show 
    } 
); 

來源:http://api.jquery.com/toggle/

+0

謝謝,沒有爲我工作,但使用了第一個解決方案。 – bat 2010-08-13 14:11:35

+3

這是不正確的,只能有一個回調函數。 – bzx 2012-01-12 12:01:51

+0

提到的語法是切換,而不是slidetoggle – hsuk 2013-06-06 04:16:22

14

它永遠是可見動畫的同時,你可以檢查.slideToggle()回調的知名度,因此會檢查,當它結束動畫,像這樣:

$('.toggle').click(function() { 
    $('#form').slideToggle(function() { 
    $('#form-container a').text(
     $(this).is(':visible') ? "Hide form container" : "Show form container" 
    ); 
    }); 
}); 
+0

謝謝,它的工作原理。但爲什麼它始終可見而動畫?我看我的代碼,它應該已經顯示/隱藏之前,如果陳述? – bat 2010-08-13 14:11:16

+2

@bat - 您在檢查前調用'.slideToggle(),所以當它顯示它*剛開始顯示時,它幾乎不可見,但它是':visible'。當你關閉它時,動畫需要一定的時間(400毫秒),所以當檢查運行時它仍然是關閉的......在任何情況下,它都是':可見的',是有道理的? – 2010-08-13 14:50:15