我建立了自定义下拉菜单,取代旧学校<select>
下拉菜单。如你所知,这些丑陋的东西是由浏览器控制的,因为该网站主要是黑暗的,我不想要一个像<select>
元素一样的白色下拉框。隔离自定义下拉列表
我用下面的JS:
function DropDown(el) {
this.dd = el;
this.placeholder = this.dd.children('span');
this.opts = this.dd.find('ul.dropdown > li');
this.val = '';
this.index = -1;
this.initEvents();
}
DropDown.prototype = {
initEvents: function (e) {
var obj = this;
obj.dd.on('click', function (event) {
$(this).toggleClass('active');
//event.stopPropagation();
return false;
});
obj.opts.on('click', function() {
var opt = $(this);
obj.val = opt.text();
obj.index = opt.index();
obj.placeholder.text(obj.val);
});
},
getValue: function() {
return this.val;
},
getIndex: function() {
return this.index;
}
}
$(function() {
var dd = new DropDown($('.custom-dropdown'));
//var dd = new DropDown($('#dd2'));
$(document).click(function() {
// all dropdowns
$('.wrapper-dropdown-3').removeClass('active');
// dropdown closes by clicking outside
$(".custom-dropdown ul").parent().removeClass('active');
});
});
和HTML看起来像这样:
<div class="form-group">
<label class="control-label">Select Your Area</label>
<div id="dd" class="custom-dropdown form-control">
<span>Select One</span>
<ul class="dropdown">
<li><a href="#">White/Caucasian</a></li>
<li><a href="#">Black/African-American</a></li>
<li><a href="#">Hispanic</a></li>
<li><a href="#">Asian</a></li>
<li><a href="#">Pacific Islander</a></li>
<li><a href="#">Middle-Eastern</a></li>
</ul>
</div>
</div>
如果我做了以下内容:
var dd = new DropDown($('#dd'));
var dd = new DropDown($('#dd2'));
...
var dd = new DropDown($('#ddnth'));
问题就解决了。事实上,这是我一直在做的事情。但这很麻烦。这个应用程序将有大约1000个数据输入页面。因此这并不理想。
我的JS显示var dd = new DropDown($('.custom-dropdown'));
,修正了初始化问题,因为一个类可以共享,一个ID可以没有,但是......当我拿起一个选项,从下拉菜单中的一个,它填充所有的人(因为类的我知道):(
所以,帮助我在这里,我怎么能初始化这个全球和隔离下拉菜单人口只是正在使用的?
见我的DEMO here PS我的SCSS道歉,点击视图编译,如果这可以帮助你。即使认为这不是一个CSS问题无论如何;)
谢谢你!
我知道它是为你们一个简单的解决方案。你摇滚哥们。 Obrigado e abracos! – LOTUSMS
@LOTUSMS太好了!很高兴帮助。 –