嗨,我在我的页面中使用 Jquery 自动完成下拉菜单。但是有很多下拉菜单。我想更改特定 ID 的宽度。你能帮我解决这个问题吗?
问问题
3639 次
3 回答
2
我发现我的自动完成下拉菜单的大小适合内容。
我在项目渲染函数上使用覆盖来为每个结果项目添加格式化 html,并通过调整项目渲染函数(我已经覆盖)中的项目大小,调整下拉菜单以适应。
我使用一个变量来存储所需的宽度,因为我需要它根据父 div 的大小动态地存储,因为我正在使用可调整大小的“portlet”。我在 ajax 成功回调中计算所需的宽度,然后在渲染函数中,我使用外部项目容器上的样式属性设置宽度(现在每个项目一个表,因为它对我来说比我尝试的所有替代方案都更好! ) :
$("#tbCustomerSearch").autocomplete({
source: function (request, response) {
$.ajax({
url: "CustomerData.asmx/GetAutoComplete",
data: "{ 'prefixText': '" + request.term + " }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
var width = $('#customerSearch').width() - 50;
searchResultTableWidth = width;
response($.map(data.d.Matches, function (item) {
return { clicked: item, value: data.d.CleanedText }
}))
}
});
},
minLength: 3,
select: function (e, ui) {
CustomerSearchSelect(ui.item.clicked);
}
});
我用来覆盖默认项目渲染的函数:
function PatchAutocomplete() {
$.ui.autocomplete.prototype._renderItem = function (ul, item) {
var re = new RegExp(this.term, 'i');
var t = "<table class='searchResults' style='width: " + searchResultTableWidth + "px'><tr><td>" +
item.clicked.CustomerName.replace(re, function (matchText) { return "<span class='matchedText'>" + matchText + "</span>" }) +
"</td><td class='alternateCell'>" +
((item.clicked.MatchedName != "") ?
("<span class='alternate'>Alternate: <span class='alternateName'>" +
item.clicked.MatchedName.replace(re, function (matchText) { return "<span class='matchedText'>" + matchText + "</span>" })
+ "</span></span>")
: "") +
"</td></tr></table>\n";
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + t + "</a>")
.appendTo(ul);
};
}
但是,如果你只需要一个静态大小,试试这个 css:
ul.ui-autocomplete.ui-menu { width: 400px; }
于 2012-11-30T14:39:15.273 回答
-1
在 CSS 中试试这个
#<idHere> + .ui-menu {
width:<widthHere>;
}
CSS 中的 + 用于相邻的兄弟姐妹,因此您应该能够将特定 div 或输入 ID 中的菜单下拉菜单与之匹配。
于 2012-11-30T14:00:14.270 回答
-3
$('#foo')
将为您提供一个 JQuery 对象,其中包含带有id="foo"
. 那应该让你开始。它在 JQuery 中被称为选择器。如果您要在 JQuery 中做很多工作,那么您应该花一些时间在http://api.jquery.com/上学习选择器之类的东西,因为它们是有效使用该语言的核心.
于 2012-11-30T14:00:01.133 回答