2013-12-05 12 views
1
<button class="btn hide_show">Don't show text</button> 

$(".hide_show").toggle(function() { 
    $(this).text("Show text"); 
}, function() { 
    $(this).text("Don't show text"); 
}); 

http://jsfiddle.net/x83qg/1/переключить текст кнопки с JQuery

Я не знаю точно, почему этот код не работает. Идея заключается в том, чтобы переключить текст кнопки

+0

'.toggle()' не является прослушивателем событий, а функцией. Вы должны заменить '.toggle()' на. .click() '. Затем выполните тест на отображаемом тексте. Если текст, скрыть его, иначе, отобразите его. – TCHdvlp

+1

Если у вас возникли проблемы с конкретной функцией jQuery, почему бы не посмотреть документацию для этой функции, чтобы убедиться, что вы используете ее правильно? – nnnnnn

+0

Ваш код работает отлично! См. Это обновление: http://jsfiddle.net/x83qg/6/. Проблема, однако, в том, что вы используете переключатель. Если вы скрыты, как вы увидите измененный текст? – Abhitalks

ответ

2

Функция toggle, которую вы выполнили на DOM, готова и скрывает кнопку, и ее невозможно показать снова. Вероятно, вам нужно изменить текст щелчка.

Live Demo

$(".hide_show").click(function() { 
    $(this).text($(this).text() == "Show text" ? "Don't show text" :"Show text"); 
}); 
0

Try:

var txt = $(".hide_show").text().toLowerCase(); 
if(txt == "show text"){ 
    $(".hide_show").text("Don't show text"); 
} 
else{ 
    $(".hide_show").text("Show text"); 
} 

DEMO here

1

JQuery первоначально имел две .toggle() функции. Один toggles visibility, а другой устанавливает click handler that toggles between multiple handlers. Какая функция была использована, зависит от того, какие аргументы были переданы. Кажется, что последнее вы пытаетесь использовать, но оно устарело в версиях v1.8 и удалено в v1.9.

К счастью, это довольно легко осуществить что-то вроде удаленного .toggle():

var text = ["Show text", "Don't show text"], 
    i = 0; 
$(".hide_show").click(function() { 
    $(this).text(text[i]); 
    i = (i + 1) % text.length; 
}); 

Демо: http://jsfiddle.net/x83qg/12/

Обратите внимание, что (как старый .toggle() функции, что позволило более чем два обработчика) кода Я будет циклически перемещаться по всем элементам массива, поэтому вы не можете просто переключаться между двумя элементами.

Смежные вопросы