使用jQuery或CSS选择jQueryUI自动完成列表
jQueryUI自动完成创建一个类似于以下内容的使用jQuery或CSS选择jQueryUI自动完成列表,jquery,css,jquery-ui,jquery-ui-autocomplete,Jquery,Css,Jquery Ui,Jquery Ui Autocomplete,jQueryUI自动完成创建一个类似于以下内容的ul列表。如何使用jQuery或CSS选择ul列表?我可以做ul.ui autocomplete,但是,我不想在我的页面上选择这个类的每个列表,只想选择一个特定的列表。id(即,ui-id-1)是由插件生成的,所以我不能使用这些。我原以为,open事件可以让我访问,但事实似乎并非如此addClass()将类添加到输入中,而不是ul <ul class="ui-autocomplete ui-front ui-menu ui-widget ui
ul
列表。如何使用jQuery或CSS选择ul
列表?我可以做ul.ui autocomplete
,但是,我不想在我的页面上选择这个类的每个列表,只想选择一个特定的列表。id(即,ui-id-1
)是由插件生成的,所以我不能使用这些。我原以为,open
事件可以让我访问,但事实似乎并非如此addClass()
将类添加到输入中,而不是ul
<ul class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content" id="ui-id-1" tabindex="0" style="display: none; width: 140px; top: 30px; left: 8px;">
<li class="ui-menu-item" id="ui-id-2" tabindex="-1">an apple</li>
<li class="ui-menu-item" id="ui-id-3" tabindex="-1">a peach</li>
<li class="ui-menu-item" id="ui-id-4" tabindex="-1">an orange</li>
</ul>
- 桃子
橙色
测试
$(函数(){
$(“#自动完成”)。自动完成({
资料来源:[“一个苹果”、“一个桃子”、“一个橘子”],
最小长度:1,
打开:功能(事件、用户界面){
日志('open',事件,ui,this);
}
}).addClass(“任何”);
$(“#autocomplete”).on(“autocompleteopen”,function(event,ui){console.log('autocompleteopen',event,ui,this);});
});
如果需要用于特定的自动完成,可以使用\u renderItem
函数覆盖控件的默认呈现。这会将ul
和item
传递给它的事件,其中ul
是渲染的ul元素,而item
是单个行项目
基本上,您的声明将更改为以下内容:
$("#autocomplete").autocomplete({
source: ["an apple","a peach","an orange"],
minLength: 1,
open: function( event, ui ) {
console.log('open',event,ui,this);
}
}).data("uiAutocomplete")._renderItem = function (ul, item) {
console.log('renderItem', item);
$(ul).addClass("whatyouneed");
var html = "<a>" + item.label + "</a>";
return $("<li></li>").data("item.autocomplete", item).append(html).appendTo(ul);
};
$(“#自动完成”).autocomplete({
资料来源:[“一个苹果”、“一个桃子”、“一个橘子”],
最小长度:1,
打开:功能(事件、用户界面){
日志('open',事件,ui,this);
}
}).数据(“uiAutocomplete”)。\u renderItem=功能(ul,项目){
console.log('renderItem',项);
$(ul.addClass(“whatyouneed”);
var html=”
如您所见,如果您检查一个li
元素,则父ul
会为其分配一个名为“whatyouneed”的类
编辑:类似地,如果您想获取列表中的ul
,而不查看项目,您只需获取小部件部分(它将返回ul
),您可以随意操作它。因此,要操作它,您可以使用:$(“#自动完成”).autocomplete(“小部件”).addClass(“yourclass”)
更多信息可在此处的文档中找到:如果您需要用于特定的自动完成,您可以使用\u renderItem
函数覆盖控件的默认呈现。这会将ul
和item
传递到它的事件,其中ul
是被呈现的ul元素,而item>则传递给它的事件代码>是单个行项目
基本上,您的声明将更改为以下内容:
$("#autocomplete").autocomplete({
source: ["an apple","a peach","an orange"],
minLength: 1,
open: function( event, ui ) {
console.log('open',event,ui,this);
}
}).data("uiAutocomplete")._renderItem = function (ul, item) {
console.log('renderItem', item);
$(ul).addClass("whatyouneed");
var html = "<a>" + item.label + "</a>";
return $("<li></li>").data("item.autocomplete", item).append(html).appendTo(ul);
};
$(“#自动完成”).autocomplete({
资料来源:[“一个苹果”、“一个桃子”、“一个橘子”],
最小长度:1,
打开:功能(事件、用户界面){
日志('open',事件,ui,this);
}
}).数据(“uiAutocomplete”)。\u renderItem=功能(ul,项目){
console.log('renderItem',项);
$(ul.addClass(“whatyouneed”);
var html=”
如您所见,如果您检查一个li
元素,则父ul
会为其分配一个名为“whatyouneed”的类
编辑:类似地,如果您想获取列表中的ul
,而不查看项目,您只需获取小部件部分(它将返回ul
),您可以随意操作它。因此,要操作它,您可以使用:$(“#自动完成”).autocomplete(“小部件”).addClass(“yourclass”)
更多信息可在此处的文档中找到:您可以使用CSS:
ul.ui-autocomplete li:last-child a {
color:red;
}
您可以将CSS用于:
ul.ui-autocomplete li:last-child a {
color:red;
}
我不完全确定我读对了你的问题-但你想为列表中的每一项设置样式吗?@ENTROPICT我的愿望是为最后一个li
(橙色)添加样式使用CSS的last child
或类似的jQuery。可能是我找不到ul
元素。尝试将CSS与nth child
一起使用,就像这样。someclass ul li:nth child(5)
,括号中的5个你需要换到准确的位置。我不完全确定你的问题读对了-但你想为列表中的每个项目设置样式吗?@entropic我的愿望是在最后一个li
(橙色)添加样式使用CSS的last child
或类似的jQuery。可能是我找不到ul
元素。尝试将CSS与nth child
一起使用,就像这样。someclass ul li:nth child(5)
,括号中的5需要换到准确的位置。谢谢熵,我知道这个解决方案。没有更简单的方法似乎很疯狂。再次感谢!@user1032531你是对的,这有点疯狂。我用一种更简单的方法更新了这个问题。啊,太好了!我之前看过小部件,但没有看到你理解它。这确实是一个伟大的解决方案!谢谢熵,我知道这个解决方案。只是没有更简单的方法似乎很疯狂。再次感谢!@user1032531你是对的,这有点疯狂。我用一个更简单的方法更新了这个问题。啊,太好了!我之前看过小部件,但不理解它。这是一个真是个好办法