2013-04-09 39 views
2

我有以下功能:如何在click函數中用jQuery更改innerhtml?

$('#jaTack').click(function() { 
     $('#syskon').slideToggle(); 
     $('#jaTack').html('Hide'); 
    }); 

所以#jaTack是按鈕的ID,按下時顯示的ID #syskon的內容。 按下按鈕時,我將該按鈕的內部html用.html()從'顯示'更改爲'隱藏'。這一切都很好,但我不知道我應該怎麼做,當它再次按下, ,使按鈕的innerhtml成爲'再次顯示'?

希望任何人有時間來幫助我。

+0

我不認爲他應該得到downvoted - 這是一個有效的「新手」的問題,而他投入的方式更多的精力不是「我可以嗨代碼plz?',爲什麼這麼難? – 2013-04-09 16:30:19

+0

謝謝@致命吉他! – 2013-04-09 16:45:46

回答

1

您可以使用ternary operator?:這樣

$('#jaTack').click(function() { 
    $('#syskon').slideToggle(); 
    $('#jaTack').html($('#jaTack').html() == "Show" ? "Hide" : "Show"); 
}); 
+0

謝謝!這是一個非常好看的解決方案,它對我來說就像一個魅力! :) – 2013-04-09 16:35:35

+0

不客氣。 – Adil 2013-04-09 16:38:47

+0

當使用這個解決方案時,我建議定義兩個文本的常量以擺脫冗餘。 – 2013-04-09 16:54:41

3

您需要將狀態存儲在某處,爲什麼不是匿名函數?

$('#jaTack').click((function() { 
    var toggle = false; 
    return function() { 
     if (toggle) { 
      $('#jaTack').html('Show'); 
     } else { 
      $('#jaTack').html('Hide'); 
     } 
     $('#syskon').slideToggle(); 
     toggle = !toggle;  
    }; 
}()); // immediate invocation because we're awesome 
+0

+1,用於很好地使用返回的匿名函數。起初我是這樣說的:「呃?」然後我就說,「啊! – Archer 2013-04-09 16:36:37

+0

謝謝你的回答。我相信這對某個人有幫助。我認爲我接受的答案更容易完成這項任務。但我再次感謝您的時間和答覆。 – 2013-04-09 16:36:42