Первый виждет, с которым мы познакомимся - это button
. Виджет button создает кнопку и применяется к одиночным элементам.
Например:
<html> <head> <meta charset='utf-8'> <link rel="stylesheet" type="text/css" href="jquery-ui-1.10.3.custom.min.css"> <script src="jquery-2.0.2.min.js"></script> <script src="jquery-ui-1.10.3.custom.min.js"></script> </head> <body> <h4>Блок ссылок</h4> <p><a class="a_jqui" href="https://google.com">Ссылка 1</a></p> <p><a href="https://google.com">Ссылка 2</a></p> <h4>Блок кнопок</h4> <p><button class="button_jqui">Кнопка 1</button></p> <p><button>Кнопка 2</button></p> <script type="text/javascript"> $(function(){ $('.a_jqui').button().click(function(e){ e.preventDefault(); alert('Виджет button'); }); $('.button_jqui').button(); }); </script> </body> </html>
В итоге после действия виджета button
первая ссылка получит следующую разметку:
<a aria-disabled="false" role="button" class="a_jqui ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" href="https://google.com"><span class="ui-button-text">Ссылка 1</span></a>
В итоге визуально это будет выглядеть так:
В зависимости от выбранной темы подключаемых силей jquery-ui внешний вид создаваемых кнопок может немного отличаться, однако мы также сами
можем настроить стиль. Например, на приведенном выше изображении видно, что кнопки слишком большие, и мы можем сделать их меньше, установив
свойства у класса ui-button
:
<style> .ui-button {font-size: 13px;} </style>
Мы можем управлять виджетом button через ряд методов:
button("disable"): делает кнопку недоступной
$(function(){ $('.a_jqui').button().click(function(e){ e.preventDefault(); $('.button_jqui').button('disable'); }); $('.button_jqui').button(); });
Обратите внимание, что если ранее не был применен к элементам виджет button, то нельзя будет использовать его методы.
button("enable"): делает кнопку доступной для взаимодействия
button("destroy"): удаляет функциональность виджета button у элемента
button("widget"): возвращает объект jQuery, представляющий виджет (var widget = $(".button_jqui").button("widget");
)
button("refresh"): обновляет визуальное состояние элемента
button("option"): позволяет получить или установить значения свойств кнопки:
<p><button class="get_option">Получить значение</button></p> <p><button class="set_option">Установить значение</button></p> <script type="text/javascript"> $(function(){ $('button.get_option').button().click(function(){ // получаем значение var isDisabled=$('button.get_option').button('option', 'disabled'); console.log(isDisabled); }); $('button.set_option').button().click(function(){ // устанавливаем значение $('button.set_option').button('option', 'disabled', true); }); }); </script>
Для получения значения в качестве второго параметра после "option" передается название свойства, которое надо получить. А для установки добавляется третий параметр, который указывает на новое значение свойства, переданного во втором параметре.
Кроме методов у виджета button определено также несколько свойств.
Свойство disabled
. Выше мы уже использовали это свойство для отключения кнопки. Но кроме того, мы можем использовать следующий синтаксис для
его установки: $('button.get_option').button({disabled:true})
Свойство label
: это свойство устанавливает надпись кнопки. ($('button.get_option').button({label:'Кнопка 1'})
).
Если в разметке html кнопки задано изначальная надпись, то установка свойства label заменяет ее.
Свойство icons
устанавливает иконку на кнопке. Весь список возможных иконок вы можете найти на офсайте по адресу
https://api.jqueryui.com/theming/icons/. В загружаемом пакете с
jquery-ui эти иконки находятся в папке css/images.
<button class="help">Помощь</button> <script type="text/javascript"> $(function(){ $('button.help').button({icons: { secondary: "ui-icon-help" }}); }); </script>
В данном случае устанавливается иконка после текста кнопки:
Если нам надо установить иконку перед текстом, то используется опция primary
: $('button.help').button({icons: { primary: "ui-icon-help" }});
.
Также при желании можно задать иконки до и после текста, использовав сразу две опции.
Свойство showLabel
указывает, должна ли отображаться надпись на кнопке.
$('button.get_option').button({showLabel:false})
- в данном случае, если для кнопки установлено свойство icons
,
то есть заданы иконки, то надпись не будет отображаться, а будет отображаться заданная иконка. Если свойство icons не указано, то свойство showLabel игнорируется.
Если виджет button
позволяет создать кнопку из одного элемента, то buttonset
применяется для создания группы
кнопок. Например, мы можем создать группу флажков (checkbox) или переключателей (radiobutton). При этом buttonset
применяется
не к самим кнопкам, а к их контейнерам:
<div id="langs"> <input type="radio" id="java" name="lang" checked><label for="java">Java</label> <input type="radio" id="csharp" name="lang"><label for="csharp">C#</label> <input type="radio" id="php" name="lang"><label for="php">PHP</label></p> </div> <script type="text/javascript"> $(function(){ $('#langs').buttonset(); }); </script>
Аналогично мы можем установить виджет и для группы флажков.