jQuery模擬select實現(xiàn)下拉菜單功能
用jquery模擬一淘上面的搜索下拉的功能,利用css3做箭頭的動畫效果。
JS代碼:
/*
* 模擬搜索下拉select
* 默認調(diào)用方式:$(el).setSelect({
* optionList: [], //這里是下拉的選項,如['aa','bb']
* hiddenInput: '#optionHidden', //隱藏的input獲取選中后的值,供表單提交時傳值
* getOption: '#sOptionBtn',
* callback: function(option){}
* })
*
*/
(function ($) {
$.fn.setSelect = function(options){
var opt = $.extend({
optionList: [],
getOption: '',
hiddenInput: '',
callback: function(){}
}, options || {});
return this.each(function(){
opt._id = this;
var _time;
var arrow = $(this).find('i');
$(opt._id).append('<ul id="selectList"></ul>');
for(var i=0;i<opt.optionList.length;i++){
$("#selectList").append('<li>'+opt.optionList[i]+'</li>')
};
$(opt._id).bind({
mouseenter: function(){
$(arrow).addClass('arrow-hover');
$('#selectList').slideDown();
clearTimeout(_time);
},
mouseleave: function(){
_time=setTimeout(function(){
$(arrow).removeClass('arrow-hover');
$('#selectList').slideUp()
},300);
}
});
//獲取選擇的值
$('#selectList').delegate('li','click',function(){
var option = $(this).text();
$(opt.getOption).text(option);
$(opt.hiddenInput).val(option);
$('#selectList').slideUp();
return opt.callback(option);
});
});
}
})(jQuery);
demo:(只有在高級的chrome及firefox下才能看到CSS3動畫效果)
截個圖:


代碼:
<!doctype html>
<htm>
<head>
<meta http-equiv="Content-type" content="text/html charset=utf-8">
<title></title>
<style>
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td {
margin: 0;
padding: 0
}
body, button, input, select, textarea {
font: 12px Arial, Helvetica, sans-serif
}
h1, h2, h3, h4, h5, h6 {
font-size: 100%
}
code, kbd, pre, samp {
font-family: courier new, courier, monospace
}
small {
font-size: 12px
}
ul, ol {
list-style: none
}
a {
text-decoration: none;
color: #333
}
a:hover {
text-decoration: underline
}
sup {
vertical-align: text-top
}
sub {
vertical-align: text-bottom
}
legend {
color: #000
}
fieldset, img {
border: 0
}
button, input, select, textarea {
font-size: 100%
}
button {
border: 0 none;
cursor: pointer
}
table {
border-collapse: collapse;
border-spacing: 0
}
em {
font-style: normal
}
address {
font-style: normal
}
textarea {
resize: vertical
}
html {
zoom:expression(function(ele) {
ele.style.zoom = "1";
document.execCommand("BackgroundImageCache", false, true)
}
(this))
}/*解決IE下express重復執(zhí)行的問題*/
article, aside, audio, canvas, command, datalist, details, embed, figcaption, figure, footer, header, hgroup, keygen, meter, nav, menu, mark, output, progress, section, source, video, address {
display: block
}/*html5標簽向下兼容*/
.clearfix:after {
content: '\20';
display: block;
height: 0;
clear: both;
visibility: hidden
}
.clearfix {
*zoom:1
}
.arrow-dn {
display: inline-block;
height: 0;
width: 0;
font-size: 0;
overflow: hidden;
border: 3px solid #505050;
border-color: #505050 transparent transparent;
_border-style: solid dotted dotted dotted
}
.top-search {
width: 497px;
height: 30px;
_height: 33px;
background: url(../images/bg.png) left top no-repeat;
_padding-bottom: 0;
margin-top: 20px;
border: 3px solid #cd0001;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
position: relative;
z-index: 9;
margin: 50px auto
}
.top-search input {
width: 350px;
float: left;
padding: 7px 0;
_padding: 6px 0;
border: none 0;
background: 0;
color: #666;
font-size: 14px
}
.top-search input:focus, .area-search .search-intri input:focus {
outline: 0
}
.top-search button {
width: 77px;
height: 30px;
line-height: 30px;
font-weight: bold;
font-size: 14px;
text-align: center;
background: #f4ac1f;
float: right
}
.top-search .select {
float: left;
font-size: 14px;
width: 55px;
padding-top: 5px;
margin-right: 5px;
position: relative;
z-index: 3
}
.top-search .select ul {
position: absolute;
left: -3px;
top: 30px;
width: 55px;
background: #fff;
border: 3px solid #cd0001;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
border-top: 0;
line-height: 1.8;
display: none
}
.top-search .select ul li {
cursor: pointer;
padding: 2px 0;
padding-left: 10px
}
.top-search .select ul li:hover {
background: #f3f3f3
}
.top-search .select .s-option {
display: inline-block;
position: absolute;
top: 0;
height: 32px;
line-height: 28px;
width: 45px;
padding-left: 8px
}
.top-search .select a:hover {
text-decoration: none
}
.top-search .select .arrow-dn {
border-width: 4px;
border-color: #939393 transparent transparent;
position: absolute;
right: 7px;
top: 11px;
-webkit-transition: -webkit-transform .2s ease-in-out;
-webkit-transform: translate3d(0, 0, 999px);
-webkit-backface-visibility: visible;
-moz-transition: -moz-transform .2s ease-in-out;
-moz-transform: translate3d(0, 0, 999px);
-moz-backface-visibility: visible;
}
.top-search .select .arrow-hover {
-webkit-transform: rotate(-180deg);
-moz-transform: rotate(-180deg);
-o-transform: rotate(-180deg);
-webkit-transform: translated3d(0, 0, 999px);
border-color: transparent transparent #939393\9;
top: 10px;
top: 7px\9;
_top: 11px
}
</style>
</head>
<body>
<form class="top-search clearfix">
<!--隱藏的input獲取option值-->
<input type="hidden" id="optionHidden" value="機構(gòu)">
<div class="select">
<a id="sOptionBtn" class="s-option" href="javascript:void(0)">機構(gòu)</a>
<i class="arrow-dn"></i>
</div>
<input type="text" id="kw">
<button type="submit">搜索</button>
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(function(){
$('.top-search .select').setSelect({
optionList: ['機構(gòu)','課程'],
hiddenInput: '#optionHidden',
getOption: '#sOptionBtn',
callback: function(option){}
});
});
(function ($) {
$.fn.setSelect = function(options){
var opt = $.extend({
optionList: [],
getOption: '',
hiddenInput: '',
callback: function(){}
}, options || {});
return this.each(function(){
opt._id = this;
var _time;
var arrow = $(this).find('i');
$(opt._id).append('<ul id="selectList"></ul>');
for(var i=0;i<opt.optionList.length;i++){
$("#selectList").append('<li>'+opt.optionList[i]+'</li>')
};
$(opt._id).bind({
mouseenter: function(){
$(arrow).addClass('arrow-hover');
$('#selectList').slideDown();
clearTimeout(_time);
},
mouseleave: function(){
_time=setTimeout(function(){
$(arrow).removeClass('arrow-hover');
$('#selectList').slideUp()
},300);
}
});
//獲取選擇的值
$('#selectList').delegate('li','click',function(){
var option = $(this).text();
$(opt.getOption).text(option);
$(opt.hiddenInput).val(option);
$('#selectList').slideUp();
return opt.callback(option);
});
});
}
})(jQuery);
</script>
</body>
</html>
以上就是本文的全部內(nèi)容,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Bootstrap 時間日歷插件bootstrap-datetimepicker配置與應用小結(jié)
這篇文章主要介紹了Bootstrap 時間日歷插件bootstrap-datetimepicker配置與應用小結(jié),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05
Jquery實現(xiàn)視頻播放頁面的關(guān)燈開燈效果
使用Jquery實現(xiàn)視頻播放頁面的關(guān)燈開燈效果。其中視頻顯示使用embed 元素,該元素是html5的元素,所以使用支持html5的瀏覽器效果會更好,具體實現(xiàn)代碼如下,感興趣的朋友可以參考下2013-05-05
jQuery Datatable 多個查詢條件自定義提交事件(推薦)
這篇文章主要介紹了jQuery Datatable 多個查詢條件自定義提交事件的相關(guān)資料,需要的朋友可以參考下2017-08-08
struts2+jquery+json實現(xiàn)異步加載數(shù)據(jù)(自寫)
異步加載數(shù)據(jù)利用struts2+jquery+json實現(xiàn),具體代碼如下,感興趣的各位可以參考下哈,希望對大家有所幫助2013-06-06
jquery $(document).ready() 與window.onload的區(qū)別
Jquery中$(document).ready()的作用類似于傳統(tǒng)JavaScript中的window.onload方法,不過與window.onload方法還是有區(qū)別的。2009-12-12
jquery實現(xiàn)點擊TreeView文本父節(jié)點展開/折疊子節(jié)點
今天客戶提出要點擊菜單(TreeView實現(xiàn)的)的父級節(jié)點時,展開節(jié)點,很多新手朋友可能對此會很陌生,接下來介紹解決方法,感興趣的朋友可以了解下2013-01-01

