Использование jQuery ответ прост. Просто отметьте такие кнопки с новым классом называется toggle-text
и использовать <span>
и <span class="hidden">
пометить текст, который вы хотите, чтобы переключиться назад и вперед между:
<a class="btn btn-primary toggle-text" data-toggle="collapse" href="#collapseExample">
See <span>more</span><span class="hidden">less</span>...
</a>
Вы можете иметь столько же или несколько <span>
тегов, как вы хотите и можете заказать их, как вы хотите, важно, действительно ли они отмечены классом hidden
.
Теперь в Jquery вы можете сделать:
$('.hidden').removeClass('hidden').hide();
$('.toggle-text').click(function() {
$(this).find('span').each(function() { $(this).toggle(); });
});
Первая строка немного котельного пластины - JQuery и Bootstrap имеют несколько противоречивые представления о скрыты. Это просто переворачивает все, что вы отметили как скрытые, используя класс Bootstrap hidden
, чтобы скрыть jQuery, что упрощает использование функций видимости jQuery .
Следующий бит - это важный материал - он устанавливает обработчик на всех элементах, отмеченных нашим новым классом toggle-text
- этот обработчик переключает видимость дочерних элементов данного элемента при его нажатии.
Смотреть все в действии с этим jFiddle - http://jsfiddle.net/w3y421m9/1/
Примечание: имя toggle-text
совершенно произвольно и используется только для обозначения кнопок, на которые мы хотим это поведение переключения.
Это первый раз, когда я написал вопрос с намерением ответить на него. Мне интересно узнать, есть ли у кого-то лучший ответ.
Для меня это решение выглядит очень просто и имеет большой плюс сохранения текста кнопки вместе с HTML для кнопки без дополнительных специальных CSS или Javascript/jQuery-кода.
Jquery хорош тем, что он не должен быть настроен на основе каждого кнопки в зависимости от текста, который вы хотите отобразить. И у вас есть много гибкости при смешивании текста, который вы делаете, и не хотите переключаться, например.следующие эквиваленты:
<span>Show more...</span><span class=hidden">Show less...</span>
Show <span>more</span><span class=hidden">less</span>...
Show <span class=hidden">less</span><span>more</span>...
Как я уже сказал, мне приятно иметь текст в том же месте, что и остальная часть HTML, а не отдельно от другого в каком-то конкретном конкретном коде jQuery. –