我正在使用jQuery UI自動完成與分類的搜索結果,我想用CSS來加強它。jQuery UI自動完成自定義標記
不幸的是,jQuery用戶界面不會讓您可輕鬆默認的標記真的很難一起工作:
<input class="ui-autocomplete-input"/>
<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all">
<li class='ui-autocomplete-category'>Category 1</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 1</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 2</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 3</a>
</li>
<li class='ui-autocomplete-category'>Category 2</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 1</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 2</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 3</a>
</li>
</ul>
,我想標記是這樣的:
<input class="ui-autocomplete-input"/>
<ul class="ui-autocomplete ui-catcomplete">
<div class="ui-block">
<div class="ui-autocomplete-category">Category 1</div>
<div class="ui-list">
<li class="ui-menu-item">
<a class="ui-corner-all">item 1</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 2</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 3</a>
</li>
</div>
</div>
<div class="ui-block">
<div class="ui-autocomplete-category">Category 1</div>
<div class="ui-list">
<li class="ui-menu-item">
<a class="ui-corner-all">item 1</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 2</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 3</a>
</li>
</div>
</div>
</ul>
這就是我達到我的極限的地方。
我實際上設法創建了標記,但我不能再通過單擊該項目來選擇和提交。
這裏是我想出了代碼:
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function(ul, items) {
var self = this,
currentCategory = "",
i = 0;
$.each(items, function(index, item) {
if (item.category != currentCategory) {
ul.append("<div class='ui-autocomplete-category'>" + item.category + "</div>");
currentCategory = item.category;
}
self._renderItem(ul, item);
});
/* This is how I thought it would work */
ul.find('.ui-autocomplete-category').each(function() {
$(this).nextUntil('div')
.andSelf()
.wrapAll('<div class="ui-block">')
.nextUntil('div')
.wrapAll('<div class="ui-list">');
});
},
_renderItem: function(ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
},
});
$(function() {
$("#ui-autocomplete-input").catcomplete({
source: '<?php echo SITEURL?>/users/complete/',
delay: 0,
autoFocus: true,
select: function(event, ui) {
if(ui.item)
{
$('#ui-autocomplete-input').attr('value',ui.item.value);
}
$('#ui-autocomplete-form').submit();
}
});
});
所以基本上,選擇:功能部分沒有在所有的工作。
任何人都可以幫助我嗎?
我確定有一個更簡單的方法來修改默認標記,並使其工作得很好。
這是我希望它看起來像:
一個'div'不是一個無序列表,所以你已經開始要求呈現問題的一個有效的子元素。你可以描述你的意圖,當涉及到這些元素的樣式? – lsuarez
無論如何,我可以使用並將其顯示爲一個塊,它不會改變任何風格明智的。 我想漂浮在左邊的類別,並把項目在右邊,從而節省了一些空間 –
http://dl.dropbox.com/u/22030683/autocomplete.png –