Это ваша первая проблема:
if($("#label").is(':checked')) {
<label>
элементы не проверяются, только их флажки. Измените его на:
if (this.checked) {
В приведенном выше коде this
относится к элементу флажка, который был нажат, и мы посмотрим, содержит ли свойство checked
значение true
. Это гораздо эффективнее, чем .is(':checked')
.
Кроме того, элемент <label>
не имеет дочернего элемента <span>
, он просто содержит текст, поэтому
$("#label span").text("Hide");
должно быть
$("#label").text("Hide");
Но вы можете сократить все это, используя троичный условный оператор :
$("#button").click(function(){
$("#label").text(this.checked ? "Hide" : "Show");
}
Рабочая демоверсия: http://jsfiddle.net/AndyE/qnrVp/