#jquery #jquery-plugins
#jquery #jquery-плагины
Вопрос:
Я написал простой плагин jQuery, который преобразует списки UL, чтобы вести себя как поле выбора HTML.
ДЕМОНСТРАЦИЯ: http://jsfiddle.net/xkHgz /
HTML
<label for="reason">
<input name="reason" type="text" id="reason" /><a class="kd" href="javascript:;">select</a>
<div class="dataForReason">
<ul>
<li>Michael</li>
<li>Joe</li>
<li>Micah</li>
</ul>
</div>
</label>
JS
$('#reason').kreeDropdown();
Функция jQuery:
(function ($) {
$.fn.kreeDropdown = function (options) {
//default vars for the plugin
var defaults = {
triggerClass: 'kd', // class name of link to trigger dropdown
dataContainer: 'dataForReason' //class of DIV containing <li> options
};
options = $.extend(defaults, options);
//var ic = $('input#reason');
var o = options;
var mi = '#' $(this).attr('id'); // ID of destination input field
var tc = 'a.' o.triggerClass ''; // class name of link to trigger dropdown
var dc = $('.' o.dataContainer ''); //class of DIV containing <li> options
var dl = $('.' o.dataContainer ' li'); //li lists
//action starts here
dc.hide();
dc.addClass('kreeDropdownDC');
$(this).next(tc).click(function() {
dc.toggle();
dl.click(function() {
//console.log($(this).prevUntil('input'));
$(mi).val($(this).text());
dc.hide();
});
return false;
});
};
})(jQuery);
Как я мог бы написать этот плагин более эффективно?
Комментарии:
1. Я должен упомянуть, что основная причина этой функции заключается в том, чтобы позволить пользователям выбирать значение из «выпадающего списка», которое они могут изменять в текстовом поле ввода. Значения в поле выбора являются готовыми ответами и потребуют от пользователя изменения / редактирования текста.
Ответ №1:
Вот так: http://harvesthq.github.com/chosen /
Комментарии:
1. Спасибо, Мэтт. Я не упомянул основную причину этой функции. Пожалуйста, посмотрите мой комментарий выше.
Ответ №2:
Я написал простой плагин, который делает именно это. Он очень прост и минималистичен. http://westoque.github.com/bigbadselect