2013-04-09 38 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