div ul li模拟下拉选项(option标签)

现在很多页面为样式的美观,对option标签的使用越来越少了,而是自己定义一种样式来模拟这样的情况,下面这个例子是我自己写的方法,但是没有做css样式,希望大家能够明白我在说什么

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script src="lib/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(
	function(){
		$("#lang").click(function(){
			if("block" == $("#huangbiao").css("display")){
				hideLi();
			}else{
				showLi();
			}
		});
		
		$("li").each(function(i,v){
			$(this).click(function(){
				$("#lang").val($(this).html());
				hideLi();
			});
		});
		
		$("#lang").blur(function(){
			setTimeout(hideLi,200);
		});
		
	}
	
);



function showLi(){
	$("#huangbiao").show();
}
function hideLi(){
	$("#huangbiao").hide();
}

</script>
<title>无标题文档</title>
</head>
<body>
	<input type="text" id="lang" class="input" value="English" readonly="readonly"/>
	<DIV style="display: none" id="huangbiao">
		<ul>
			<li>dddd</li>
			<li>ssss</li>
		</ul>
	</DIV>
</body>
</html>

 

技术难点:

当鼠标没有点击空白处的时候应该让现实出来的下拉列表隐藏起来,这样就会导致一个问题,当我点击下面的li标签的内容时候,先触发onblur事件,导致li标签先隐藏,在点击li的内容的时候实际上是一个空组件,而没有触发“赋值事件”,导致不能能够满足option组件的基本需求。

 

我的解决方式是当触发blur事件的时候,推迟0.2秒再隐藏起来,这实际上是触发了两个事件——先执行onblur事件,在执行li组件的赋值事件。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你使用 `<div>` 和 `<ul>` 元素来代替 `<select>` 元素,可以使用自定义属性来实现传值。例如,你可以在每个 `<li>` 元素上定义一个名为 "data-value" 的自定义属性,用于保存该选项的值。然后,在选择项发生变化时,可以获取当前选中项的值,并将其存储到一个隐藏的表单字段中,以便在表单提交时将其传递给服务器。 以下是一个示例代码,用于实现基于 `<div>` 和 `<ul>` 元素的下拉菜单,并将选中项的值传递给服务器: HTML 代码: ``` <form> <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 请选择一个选项 </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <ul> <li data-value="1">选项1</li> <li data-value="2">选项2</li> <li data-value="3">选项3</li> </ul> </div> </div> <input type="hidden" name="selectedValue" id="selectedValue"> <button type="submit">提交</button> </form> ``` JavaScript 代码: ``` $(document).ready(function() { $('.dropdown-menu li').on('click', function() { var selectedValue = $(this).data('value'); $('#selectedValue').val(selectedValue); $('.dropdown-toggle').text($(this).text()); }); }); ``` 在这个示例中,我们使用了 Bootstrap 框架来实现下拉菜单的样式。点击选项时,我们获取了该选项的值,并将其存储到名为 "selectedValue" 的隐藏字段中。在点击提交按钮时,该值将被传递到服务器。 注意,这只是一个示例代码,你需要根据自己的实际需求进行修改。同时,你还需要在服务器端编写代码来接收该值,并进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值