现在很多页面为样式的美观,对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组件的赋值事件。
?
?