Javascript Divs下拉列表的行为类似于select或combo
我在一个包装器div中有几个div,它们都代表一个实体,请看图1 当我点击选择1或选择2。。。。我需要打开一个下拉列表,从中我需要选择option并更改Select的值,但是这个下拉列表在设计上必须与Select div项相同,请参见图2 我查看了很多jquery select插件,但没有找到一个。 谁能告诉我怎么做,或者知道一个插件可以解决这个问题 这是html代码Javascript Divs下拉列表的行为类似于select或combo,javascript,jquery,html,css,combobox,Javascript,Jquery,Html,Css,Combobox,我在一个包装器div中有几个div,它们都代表一个实体,请看图1 当我点击选择1或选择2。。。。我需要打开一个下拉列表,从中我需要选择option并更改Select的值,但是这个下拉列表在设计上必须与Select div项相同,请参见图2 我查看了很多jquery select插件,但没有找到一个。 谁能告诉我怎么做,或者知道一个插件可以解决这个问题 这是html代码 <!DOCTYPE html> <html lang="en"> <head>
<!DOCTYPE html>
<html lang="en">
<head>
<title>test</title>
<meta charset="utf-8">
<style>
.wrapper
{
width:330px;
overflow:hidden;
border:solid 1px gray;
padding: 3px;
}
.element
{
width:80px;
min-height: 30px;
border:solid 1px black;
background-color: orange;
text-align: center;
line-height: 30px;
}
.float-left
{
float: left;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="element float-left">
Select 1
</div>
<div class="element float-left">
Select 2
</div>
<div class="element float-left">
Select 3
</div>
<div class="element float-left">
Select 4
</div>
</div>
</body>
</html>
测试
.包装纸
{
宽度:330px;
溢出:隐藏;
边框:实心1px灰色;
填充:3倍;
}
.元素
{
宽度:80px;
最小高度:30px;
边框:实心1px黑色;
背景颜色:橙色;
文本对齐:居中;
线高:30px;
}
.向左浮动
{
浮动:左;
}
选择1
选择2
选择3
选择4
谢谢。观看本教程:
更新(如果要通过jquery打开):
在我的示例中删除此css:
.main_nav > li:hover .sub_nav{
background-color:#E4E4E4;
display:block;
}
并使用jquery:
$(".main_nav > li").click(function(){
$(' .sub_nav').show();
$(this).find('.sub_nav').show();
});
我假设您了解Jquery库。 . 我想你可以从中得到一个想法。做些改变你就能完成你的工作
<style>
.wrapper
{
width:330px;
overflow:hidden;
border:solid 1px gray;
padding: 3px;
}
.element
{
width:80px;
min-height: 30px;
border:solid 1px black;
background-color: orange;
text-align: center;
line-height: 30px;
}
.float-left
{
float: left;
}
</style>
<div class="wrapper">
<div class="element float-left">
Select 1
</div>
<div class="element float-left">
Select 2
<div class='options'>
<div class='element'>Option 1</div>
<div class='element'>Option 2</div>
<div class='element'>Option 3</div>
<div class='element'>Option 4</div>
</div>
</div>
<div class="element float-left">
Select 3
<div class='options'>
<div class='element'>Option 1</div>
<div class='element'>Option 2</div>
<div class='element'>Option 3</div>
<div class='element'>Option 4</div>
</div>
</div>
<div class="element float-left">
Select 4
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(".options").slideUp(0);
$(".element").click(function(){
$(".options").hide(0);
$(this).find('.options').slideDown(100);
});
});
</script>
.包装纸
{
宽度:330px;
溢出:隐藏;
边框:实心1px灰色;
填充:3倍;
}
.元素
{
宽度:80px;
最小高度:30px;
边框:实心1px黑色;
背景颜色:橙色;
文本对齐:居中;
线高:30px;
}
.向左浮动
{
浮动:左;
}
选择1
选择2
选择1
选择2
选择3
选择4
选择3
选择1
选择2
选择3
选择4
选择4
$(文档).ready(函数(){
$(“.options”).slideUp(0);
$(“.element”)。单击(函数(){
$(“.options”).hide(0);
$(this).find('.options').slideDown(100);
});
});
仅仅因为我不喜欢任何jqwery,这里有一些纯js的解决方案。实际上,它还没有完全完成,并抛出了一些错误,但您可以根据自己的喜好修复它
var Ready=function(){
var menu=document.querySelector('.wrapper');
var elementsList=menu.querySelectorAll('.container');
变量切换子菜单=功能(e){
var current=e.target.parentNode.querySelector(“.submenu”);
for(var i=elementsList.length;i--;){
var element=elementsList[i]。查询选择器('.submenu');
if(element!==current&&element.classList.contains('opened'))
element.classList.remove('opened');
}
current.classList.toggle('opened');
};
菜单.addEventListener(“单击”,切换子菜单);
};
document.addEventListener('DOMContentLoaded',Ready)代码>
.wrapper{
宽度:330px;
溢出:隐藏;
边框:实心1px灰色;
填充:3倍;
光标:指针;
}
。选择,。选项{
宽度:80px;
最小高度:30px;
边框:实心1px黑色;
背景颜色:橙色;
文本对齐:居中;
线高:30px;
位置:相对位置;
}
.集装箱{
浮动:左;
}
.子菜单{
位置:绝对位置;
身高:0;
溢出:隐藏;
}
.打开{
高度:自动;
}
试验
选择1
选择1
选择2
选择3
选择2
选择1
选择2
选择3
选择3
选择1
选择2
选择3
选择4
选择1
选择2
选择3
感谢您的回复。这个例子是典型的html菜单。我的实体中不需要菜单选项。在菜单中,当点击选项元素时,链接到某个地方。我需要不同的功能,当单击Option元素来更改Select div中的值时,只需执行与组合或Select相同的行为。好的,那么您要做的是,在我给定的示例的CSS中删除或注释这一行:.main_nav>li:hover.sub_nav{背景颜色:#e4;display:block;}并使用jquery:$(“.main_nav>li”)。单击(function(){$('.sub_nav').show();//关闭任何打开的菜单$(this)。查找('.sub_nav').show();//打开所选菜单})非常感谢您对我的帮助!:)这是我可以用的东西。我将添加这段代码$(“.sub_nav>li”)。单击(函数(){alert(“Option clicked!:)”);})代码>这就是答案!再说一遍。长命百岁@Ashish Panwarthak感谢您的回复。您的答案与Ashish Panwar的答案非常相似,这是一个完整的解决方案。看看他的链接。再次感谢你的努力。