(function($){
$.fn.extend({
sSelect: function() {
return
this
.each(function(i,obj){
var
selectId = (
this
.name||
this
.id)+
'__jQSelect'
+i||
'__jQSelect'
+i;
if
(obj.style.display !=
'none'
&& $(
this
).parents()[0].id.indexOf(
'__jQSelect'
)<0){
var
tabindex =
this
.tabIndex||0;
$(
this
).before(
"<div class='dropdown' id="
+selectId+
" tabIndex="
+tabindex+
"></div>"
).prependTo($(
"#"
+selectId));
var
selectZindex = $(
this
).css(
'z-index'
),selectIndex = $(
'#'
+selectId+
' option'
).index($(
'#'
+selectId+
' option:selected'
)[0]);
$(
'#'
+selectId).append(
'<div class="dropselectbox"><h4></h4><ul></ul></div>'
);
$(
'#'
+selectId+
' h4'
).empty().append($(
'#'
+selectId+
' option:selected'
).text());
var
selectWidth=$(
'#'
+selectId+
' select'
).width();
if
($.browser.safari){selectWidth = selectWidth+15}
$(
'#'
+selectId+
' h4'
).css({width:selectWidth});
var
selectUlwidth = selectWidth + parseInt($(
'#'
+selectId+
' h4'
).css(
"padding-left"
)) + parseInt($(
'#'
+selectId+
' h4'
).css(
"padding-right"
));
$(
'#'
+selectId+
' ul'
).css({width:selectUlwidth+
'px'
});
$(
'#'
+selectId+
' select'
).hide();
$(
'#'
+selectId+
' div'
).hover(function(){
$(
'#'
+selectId+
' h4'
).addClass(
"over"
);
},function(){
$(
'#'
+selectId+
' h4'
).removeClass(
"over"
);
});
var
timeobj;
$(
'#'
+selectId+
' ul'
).bind(
"mouseover"
,function(e){
clearTimeout(timeobj);
});
var
click_fun =function(){
$(
'#'
+selectId+
' h4'
).addClass(
"current"
);
$(
'#'
+selectId+
' ul'
).show();
var
selectZindex = $(
'#'
+selectId).css(
'z-index'
);
if
($.browser.msie || $.browser.opera){$(
'.dropdown'
).css({
'position'
:
'relative'
,
'z-index'
:
'0'
});}
$(
'#'
+selectId).css({
'position'
:
'relative'
,
'z-index'
:
'999'
});
$.fn.setSelectValue(selectId);
selectIndex = $(
'#'
+selectId+
' li'
).index($(
'.selectedli'
)[0]);
var
windowspace = ($(window).scrollTop() + document.documentElement.clientHeight) - $(
'#'
+selectId).offset().top;
var
ulspace = $(
'#'
+selectId+
' ul'
).outerHeight(
true
);
var
windowspace2 = $(
'#'
+selectId).offset().top - $(window).scrollTop() - ulspace;
windowspace < ulspace && windowspace2 > 0?$(
'#'
+selectId+
' ul'
).css({top:-ulspace}):$(
'#'
+selectId+
' ul'
).css({top:$(
'#'
+selectId+
' h4'
).outerHeight(
true
)});
$(window).scroll(function(){
windowspace = ($(window).scrollTop() + document.documentElement.clientHeight) - $(
'#'
+selectId).offset().top;
windowspace < ulspace?$(
'#'
+selectId+
' ul'
).css({top:-ulspace}):$(
'#'
+selectId+
' ul'
).css({top:$(
'#'
+selectId+
' h4'
).outerHeight(
true
)});
});
$(
'#'
+selectId+
' li'
).click(function(e){
selectIndex = $(
'#'
+selectId+
' li'
).index(
this
);
$.fn.keyDown(selectId,selectIndex);
$(
'#'
+selectId+
' h4'
).empty().append($(
'#'
+selectId+
' option:selected'
).text());
$.fn.clearSelectMenu(selectId,selectZindex);
e.stopPropagation();
e.cancelbubble =
true
;
})
.hover(
function(){
$(
'#'
+selectId+
' li'
).removeClass(
"over"
);
$(
this
).addClass(
"over"
).addClass(
"selectedli"
);
selectIndex = $(
'#'
+selectId+
' li'
).index(
this
);
},
function(){
$(
this
).removeClass(
"over"
);
}
);
}
$(
'#'
+selectId)
.bind(
"focus"
,function(){
$(
'#'
+selectId+
' h4'
).addClass(
"over"
);
})
.bind(
"click"
,function(e){
if
($(
'#'
+selectId+
' ul'
).css(
"display"
) ==
'block'
){
$.fn.clearSelectMenu(selectId,selectZindex);
return
false
;
}
else
{
click_fun();
};
e.stopPropagation();
})
.bind(
"mouseover"
,function(e){
if
($(
'#'
+selectId+
' ul'
).css(
"display"
) ==
'block'
){
return
false
;
}
else
{
click_fun();
};
e.stopPropagation();
})
.bind(
"mouseout"
,function(e){
if
($(
'#'
+selectId+
' ul'
).css(
"display"
) ==
'block'
){
timeobj = setTimeout(function(){
$.fn.clearSelectMenu(selectId,selectZindex);
},500);
return
false
;
}
e.stopPropagation();
})
.bind(
'mousewheel'
, function(e,delta) {
e.preventDefault();
var
mousewheel = {
$obj : $(
'#'
+selectId+
' li.over'
),
$slength : $(
'#'
+selectId+
' option'
).length,
mup:function(){
this
.$obj.removeClass(
"over"
);
selectIndex == 0?selectIndex = 0:selectIndex--;
$.fn.keyDown(selectId,selectIndex);
},
mdown:function(){
this
.$obj.removeClass(
"over"
);
selectIndex == (
this
.$slength - 1)?selectIndex =
this
.$slength - 1:selectIndex ++;
$.fn.keyDown(selectId,selectIndex);
}
}
delta>0?mousewheel.mup():mousewheel.mdown();
})
.bind(
"dblclick"
, function(){
$.fn.clearSelectMenu(selectId,selectZindex);
return
false
;
})
.bind(
"keydown"
,function(e){
$(
this
).bind(
'keydown'
,function(e){
if
(e.keyCode == 40 || e.keyCode == 38 || e.keyCode == 35 || e.keyCode == 36){
return
false
;
}
});
var
$obj = $(
'#'
+selectId+
' li.over'
),$slength = $(
'#'
+selectId+
' option'
).length;
switch
(e.keyCode){
case
9:
return
true
;
break
;
case
13:
$.fn.clearSelectMenu(selectId,selectZindex);
break
;
case
27:
$.fn.clearSelectMenu(selectId,selectZindex);
break
;
case
33:
$obj.removeClass(
"over"
);
selectIndex = 0;
$.fn.keyDown(selectId,selectIndex);
break
;
case
34:
$obj.removeClass(
"over"
);
selectIndex = ($slength - 1);
$.fn.keyDown(selectId,selectIndex);
break
;
case
35:
$obj.removeClass(
"over"
);
selectIndex = ($slength - 1);
$.fn.keyDown(selectId,selectIndex);
break
;
case
36:
$obj.removeClass(
"over"
);
selectIndex = 0;
$.fn.keyDown(selectId,selectIndex);
break
;
case
38:
e.preventDefault();
$obj.removeClass(
"over"
);
selectIndex == 0?selectIndex = 0:selectIndex--;
$.fn.keyDown(selectId,selectIndex);
break
;
case
40:
e.preventDefault();
$obj.removeClass(
"over"
);
selectIndex == ($slength - 1)?selectIndex = $slength - 1:selectIndex ++;
$.fn.keyDown(selectId,selectIndex);
break
;
default
:
e.preventDefault();
break
;
};
})
.bind(
"blur"
,function(){
$.fn.clearSelectMenu(selectId,selectZindex);
return
false
;
})
.bind(
"selectstart"
,function(){
return
false
;
});
}
else
if
($(
this
).parents()[0].id.indexOf(
'__jQSelect'
)>0){
selectId = $(
this
).parents()[0].id;
$.fn.setSelectValue(selectId);
var
selectWidth=$(
'#'
+selectId+
' select'
).width();
if
($.browser.safari){selectWidth = selectWidth+15}
$(
'#'
+selectId+
' h4'
).css({width:selectWidth});
var
selectUlwidth = selectWidth + parseInt($(
'#'
+selectId+
' h4'
).css(
"padding-left"
)) + parseInt($(
'#'
+selectId+
' h4'
).css(
"padding-right"
));
$(
'#'
+selectId+
' ul'
).css({width:selectUlwidth+
'px'
});
if
(
this
.style.display !=
'none'
){$(
this
).hide();}
}})},
clearSelectMenu:function(selectId,selectZindex){
if
(selectId != undefined){
selectZindex = selectZindex||
'auto'
;
$(
'#'
+selectId+
' ul'
).empty().hide();
$(
'#'
+selectId+
' h4'
).removeClass(
"over"
).removeClass(
"current"
);
$(
'#'
+selectId).css({
'z-index'
:selectZindex});
}
},
setSelectValue:function(sID){
var
content = [];
$.each($(
'#'
+sID+
' option'
), function(i){
content.push(
"<li class='FixSelectBrowser'>"
+$(
this
).text()+
"</li>"
);
});
content = content.
join
(
''
);
$(
'#'
+sID+
' ul'
).html(content);
$(
'#'
+sID+
' h4'
).html($(
'#'
+sID+
' option:selected'
).text());
$(
'#'
+sID+
' li'
).eq($(
'#'
+sID+
' select'
)[0].selectedIndex).addClass(
"over"
).addClass(
"selectedli"
);
},
keyDown:function(sID,selectIndex){
var
$obj = $(
'#'
+sID+
' select'
);
$obj[0].selectedIndex = selectIndex;
$obj.change();
$(
'#'
+sID+
' li:eq('
+selectIndex+
')'
).toggleClass(
"over"
);
$(
'#'
+sID+
' h4'
).html($(
'#'
+sID+
' option:selected'
).text());
}
});
var
types = [
'DOMMouseScroll'
,
'mousewheel'
];
$.
event
.special.mousewheel = {
setup: function() {
if
(
this
.addEventListener )
for
(
var
i=types.length; i; )
this
.addEventListener( types[--i], handler,
false
);
else
this
.onmousewheel = handler;
},
teardown: function() {
if
(
this
.removeEventListener )
for
(
var
i=types.length; i; )
this
.removeEventListener( types[--i], handler,
false
);
else
this
.onmousewheel =
null
;
}
};
$.fn.extend({
mousewheel: function(fn) {
return
fn ?
this
.bind(
"mousewheel"
, fn) :
this
.trigger(
"mousewheel"
);
},
unmousewheel: function(fn) {
return
this
.unbind(
"mousewheel"
, fn);
}
});
function handler(
event
) {
var
args = [].slice.call( arguments, 1 ), delta = 0, returnValue =
true
;
event
= $.
event
.fix(
event
|| window.
event
);
event
.type =
"mousewheel"
;
if
(
event
.wheelDelta ) delta =
event
.wheelDelta/120;
if
(
event
.detail ) delta = -
event
.detail/3;
args.unshift(
event
, delta);
return
$.
event
.handle.apply(
this
, args);
}
})(jQuery);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?