觉得这个下拉框已经稍微能满足美观需求了,
这个是点出来的效果,写了键盘的方向键,回车,esc等 事件, 并且能根据页面的底部距离判断是否向上展示
今天弄了个联动的,顺便贴部分代码
效果预览:
以下代码解决了ie6的兼容问题
复制代码 代码如下:
$containerdivtext.mousedown(function() {
settimeout(
function() {
if ($newul[0].style.display == 'block') {
$newul.hide();
positionhidefix();
return false;
}
$containerdiv.focus();
//show list
$newul.slidedown(100);
positionfix();
//when keys are pressed
document.onkeydown = function(e) {
if (e == null) { // ie
var keycode = event.keycode;
} else { // everything else
var keycode = e.which;
}
//enter key or esc key pressed, hide list
if (keycode == 13 || keycode == 27) {
$newul.hide();
positionhidefix();
return false;
}
}
}, 1);
//the function settimeout is used for ie6, because if you click the element where you hava focused on the element,
//ie6 would think you click it twice(2010-2-4)
});
以下代码解决了下拉框事件定义功能匮乏问题
代码
复制代码 代码如下:
if (!opts.callbackfn) {
$newli.click(function(e) {
var $clickedli = jquery(e.target),
text = $clickedli.text();
//update counter
currentindex = $newli.index($clickedli);
//remove all hilites, then add hilite to selected item
$newli.removeclass('hilite');
$clickedli.addclass('hilite');
setselecttext(text);
$newul.hide();
$containerdiv.css('position', 'static'); //ie
});
} else {
$newli.click(function(e) {
var $clickedli = jquery(e.target),
text = $clickedli.text();
//update counter
currentindex = $newli.index($clickedli);
//remove all hilites, then add hilite to selected item
$newli.removeclass('hilite');
$clickedli.addclass('hilite');
setselecttext(text);
$newul.hide();
$containerdiv.css('position', 'static'); //ie
(opts.callbackfn)(this.value);
});
} //param callbackfn means you can define a event function from every li in the ul;(2010-2-4)
然后是页面的应用,
代码
复制代码 代码如下:
这三块只是部分
但是花的时间较多 其它代码不贴了 有问题留言吧。。。