pqSelect是一个jQuery插件,可用于将常规的<select>元素转换为可定制的高性能下拉选择小部件。
单击选项、复选框(多选)或单选按钮(单选)后,用户可以从下拉列表中的单个或多个选项中进行选择。
该小部件是基于jQuery UI设计的,这意味着它可以完全自定义主题,并易于与Bootstrap框架集成。
该插件最棒的部分是它支持虚拟渲染,即使用户处于低带宽或慢速连接时,该插件也能顺利渲染和运行。
1.在文档中加载必要的jQuery库和jQuery UI。
<!-- jQuery UI Theme --> <link rel="stylesheet" href="/path/to/cdn/jquery-ui.css"> <!-- jQuery Library --> <script src="/path/to/cdn/jquery.min.js"></script> <!-- jQuery UI --> <script src="/path/to/cdn/jquery-ui.min.js"></script>
2.加载jQuery pqSelect插件的文件。
<link rel="stylesheet" href="pqselect.min.css" /> <script src="pqselect.min.js"></script>
3.调用函数pq选择
在现有的select元素上,插件将处理其余部分。
<select id="select-demo" multiple> <optgroup label="Brazil"> <option>RJ</option> <option>SP</option> </optgroup> <optgroup label="Canada"> <option>BC</option> <option>Québec</option> </optgroup> <optgroup label="Ireland"> <option>Co. Cork</option> </optgroup> <optgroup label="UK"> <option>Essex</option> <option>Isle of Wight</option> </optgroup> <optgroup label="USA"> <option>AK</option> <option>CA</option> <option>ID</option> <option>MT</option> <option>NM</option> <option>OR</option> <option>WA</option> <option>WY</option> </optgroup> <optgroup label="Venezuela"> <option>DF</option> <option>Lara</option> <option>Nueva Esparta</option> <option>Táchira</option> </optgroup> </select>
$(function() { $("#select-demo").pqSelect({ // options }) });
4.将复选框(用于多选)或单选按钮(用于单选)添加到选项中。推荐。
$(function() { $("#select-demo").pqSelect({ // options }) });
5.更多具有默认值的配置选项。
$(function() { $("#select-demo").pqSelect({ singlePlaceholder: 'Select an option', displayText: '{0} of {1} selected', maxDisplay: 4, maxHeight: 300, // max number of options allowed to select maxSelect: 0, multiplePlaceholder: 'Select options', selectallText: 'Select All', closeOnWindowScroll: true, closeOnWindowResize: true, itemCls: 'pq-select-item ui-corner-all ui-state-default', // for Bootstrap bootstrap: { on: false, btn: 'btn btn-default', popupCont: 'panel panel-default', selectCls: 'label label-info', itemCls: 'label label-default', closeIcon: 'glyphicon glyphicon-remove', searchIcon: 'glyphicon glyphicon-search', hoverCls: '' }, position: { my: 'left top', at: 'left bottom', collision: 'flipfit' }, kcOpen: [KC.DOWN, KC.ENTER, KC.UP], deselect: true, hoverCls: 'pq-state-hover', // jQueryUI resizable opitons optionsResizable: { handles: 'e,s' }, search: true, // or 'begin' searchRule: 'contain', _selectCls: 'pq-state-select', selectCls: 'ui-state-highlight', width: null, rowHt: 25, maxSelectReach: null, maxSelectExceed: null }) });
6.API方法。
// close $("#select-demo").pqSelect( "close" ); // destroy $("#select-demo").pqSelect( "destroy" ); // disable $("#select-demo").pqSelect( "disable" ); // enable $("#select-demo").pqSelect( "enable" ); // get instance var select = $("#select-demo").pqSelect( "getInstance" ).select; // check if is open $("#select-demo").pqSelect( "isOpen" ); // get options var options = $("#select-demo").pqSelect( "option" ); // get values from option var disabled = $("#select-demo").pqSelect( "option", "disabled" ); // set option $("#select-demo").pqSelect( "option", "disabled", true ); // set options $("#select-demo").pqSelect( "option", {disabled: true} ); // refresh $("#select-demo").pqSelect( "refresh" ); // reload data $("#select-demo").pqSelect( "refreshData" ); // get widget var widget = $("#select-demo").pqSelect( "widget" );
7.事件。
$("#select-demo").on("pqselectcreate", function(event, ui){ // do something }); $("#select-demo").on("pqselectmaxselectreach", function(event, ui){ // do something }); $("#select-demo").on("pqselectmaxselectexceed", function(event, ui){ // do something });