jquery:自定义选择框问题?
嘿,伙计们, 我用css和jquery在html中构建了自己的选择框jquery:自定义选择框问题?,jquery,select,Jquery,Select,嘿,伙计们, 我用css和jquery在html中构建了自己的选择框 <div class="select"> <ul> <li class="destination option small darr loc">One</li> <li class="destination option small loc">Two</li> <li class="destin
<div class="select">
<ul>
<li class="destination option small darr loc">One</li>
<li class="destination option small loc">Two</li>
<li class="destination option small loc">Three</li>
<li class="destination option small loc">Four</li>
</ul>
</div>
因此,当单击第一项时,选择框会像下拉菜单一样展开。单击其中一个选项时,选择框再次折叠
我还希望在单击页面上的其他位置时,selectbox会折叠,因此我正在收听$(文档)上的单击事件。那很好用
我唯一的一个小错误是,当页面上有多个选择框时,我展开其中的一个,然后单击另一个选择框,前一个选择框不会折叠
请参见我的示例:
当您展开第二个选择框,然后直接单击上面的选择框时,它不会折叠。两者都保持开放
知道如何解决吗?您可以通过以下方式解决此问题:
var currentSelectDiv = null;
$('.select ul li.option').click(function(e) {
// store the id attribute
currentSelectDiv = $(this).parents("div.select").attr("id");
$(this).siblings().slideToggle(100).removeClass('darr');
$(this).addClass('darr');
// allow bubbling because we want this event to close other classes
});
$(document).click(function(e) {
$('.select ul li.option').each(function() {
// check IDs to make sure we are only closing the other lis, not our own
if($(this).parents("div.select").attr("id") !=
currentSelectDiv) {
if ( !$(this).is(":hidden") ) {
$(this).not('.darr').slideToggle(100);
}
}
});
// clear the currently clicked parent
currentSelectDiv = null;
});
以下是HTML:
<div class="select" id="first" style="z-index:2">
<ul>
<li class="destination option small darr loc">One</li>
<li class="destination option small loc">Two</li>
<li class="destination option small loc">Three</li>
<li class="destination option small loc">Four</li>
</ul>
</div>
<div class="select" id="second">
<ul>
<li class="destination option small darr dest">Five</li>
<li class="destination option small dest">Six</li>
<li class="destination option small dest">Seven</li>
<li class="destination option small dest">Eight</li>
</ul>
</div>
一个
两个
- 三个
- 四个
五个
六个
七个
八个
您可以通过以下方式解决此问题:
var currentSelectDiv = null;
$('.select ul li.option').click(function(e) {
// store the id attribute
currentSelectDiv = $(this).parents("div.select").attr("id");
$(this).siblings().slideToggle(100).removeClass('darr');
$(this).addClass('darr');
// allow bubbling because we want this event to close other classes
});
$(document).click(function(e) {
$('.select ul li.option').each(function() {
// check IDs to make sure we are only closing the other lis, not our own
if($(this).parents("div.select").attr("id") !=
currentSelectDiv) {
if ( !$(this).is(":hidden") ) {
$(this).not('.darr').slideToggle(100);
}
}
});
// clear the currently clicked parent
currentSelectDiv = null;
});
以下是HTML:
<div class="select" id="first" style="z-index:2">
<ul>
<li class="destination option small darr loc">One</li>
<li class="destination option small loc">Two</li>
<li class="destination option small loc">Three</li>
<li class="destination option small loc">Four</li>
</ul>
</div>
<div class="select" id="second">
<ul>
<li class="destination option small darr dest">Five</li>
<li class="destination option small dest">Six</li>
<li class="destination option small dest">Seven</li>
<li class="destination option small dest">Eight</li>
</ul>
</div>
一个
两个
- 三个
- 四个
五个
六个
七个
八个
与其他解决方案类似,您可以分配ID,并在单击时隐藏所有不是所单击选择ID的选择
(未优化)与其他解决方案类似,您可以分配ID,并在单击时隐藏所有不是所单击选择ID的选择 (未优化)