gpt4 book ai didi

jquery-ui - jQuery UI SelectMenu Dropdown - 打开 UP 而不是 DOWN

转载 作者:行者123 更新时间:2023-12-01 09:35:51 25 4
gpt4 key购买 nike

我正在使用 jQuery UI Select Menu并且偶尔会遇到一些问题。

它位于我的用户页面的左上角。使用“下拉/地址”类型,有时(似乎是随机的),下拉菜单打开而不是向下,除了第一个选项之外,您无法选择其中的任何选项,因为它都在屏幕“上方”。

有人知道那里有一个设置/选项来强制它打开吗?谢谢!

更新.... 11/23/11 1:11pm EST这是调用的一些代码:

$(function(){
$('select#selectionA').selectmenu({
style:'dropdown',
menuWidth: 220,
positionOptions: {
collision: 'none'
},
format: addressFormatting
});
});

最佳答案

插件使用 Position jQuery UI 库的实用程序。如果您查看 source 中的默认选项在插件中,有一个 positionOptions 属性在函数 _refreshPosition() 中使用:

options: {
transferClasses: true,
typeAhead: 1000,
style: 'dropdown',
positionOptions: {
my: "left top",
at: "left bottom",
offset: null
},
width: null,
menuWidth: null,
handleWidth: 26,
maxHeight: null,
icons: null,
format: null,
bgImage: function() {},
wrapperElement: "<div />"
}

_refreshPosition: function() {
var o = this.options;

// if its a pop-up we need to calculate the position of the selected li
if ( o.style == "popup" && !o.positionOptions.offset ) {
var selected = this._selectedOptionLi();
var _offset = "0 " + ( this.list.offset().top - selected.offset().top - ( this.newelement.outerHeight() + selected.outerHeight() ) / 2);
}
// update zIndex if jQuery UI is able to process
this.listWrap
.zIndex( this.element.zIndex() + 1 )
.position({
// set options for position plugin
of: o.positionOptions.of || this.newelement,
my: o.positionOptions.my,
at: o.positionOptions.at,
offset: o.positionOptions.offset || _offset,
collision: o.positionOptions.collision || 'flip'
});
}

如果没有为位置实用程序的 collision 选项提供默认值,您可以看到它使用默认值 'flip'。根据 jQuery UI 文档:

flip: to the opposite side and the collision detection is run again to see if it will fit. If it won't fit in either position, the center option should be used as a fall back.
fit: so the element keeps in the desired direction, but is re-positioned so it fits.
none: not do collision detection.

所以我猜你可以在初始化插件时传递一个选项来为碰撞选项定义 none:

$('select').selectmenu({
positionOptions: {
collision: 'none'
}
});

还没有测试,这只是看代码。


编辑以下评论

我注意到 github 上可用的 javascript 版本和插件网站上使用的版本不一样。我不知道你用的是哪一个,但是网站上使用的那个实际上没有 positionOptions 选项,所以在调用 selectmenu().
似乎无法直接链接到网站上的 javascript,所以这里有一些代码来说明:

defaults: {
transferClasses: true,
style: 'popup',
width: null,
menuWidth: null,
handleWidth: 26,
maxHeight: null,
icons: null,
format: null
}

_refreshPosition: function(){
//set left value
this.list.css('left', this.newelement.offset().left);

//set top value
var menuTop = this.newelement.offset().top;
var scrolledAmt = this.list[0].scrollTop;
this.list.find('li:lt('+this._selectedIndex()+')').each(function(){
scrolledAmt -= $(this).outerHeight();
});

if(this.newelement.is('.'+this.widgetBaseClass+'-popup')){
menuTop+=scrolledAmt;
this.list.css('top', menuTop);
}
else {
menuTop += this.newelement.height();
this.list.css('top', menuTop);
}
}

我能够按照我第一次使用 github 中的版本描述的那样工作.在我看来,这是一个更新/完整的版本。此外,它是几天前更新的。

我创建了一个带有两个选择的小测试页面。我已经更改了下拉菜单的位置以显示在上面。
第一个没有指定碰撞选项,因此使用了'flip'并且下拉显示在下方,因为上面没有足够的空间。
第二个指定了“无”,即使空间不足,下拉菜单也会显示在上方。

我已将小型测试项目放在我的 dropbox 上。 .

关于jquery-ui - jQuery UI SelectMenu Dropdown - 打开 UP 而不是 DOWN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8197074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com