select中无法使用click的处理_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:17:50
原创
1490人浏览过

今天工作用到了select,想要给option添加click点击事件,可是却没有任何效果,百度了才发现,原来竟然是不支持呀!

众所周知(其实我才知道哎),在ie里, select的option是不支持onclick事件的, 而在ff 和 opera 里, option 是支持onclick事件的.
(safari似乎也不支持,不过暂时我还不知道如何解决safari的问题.)

我今天是用onchange来解决的,原谅也是才知道它可以用这个。select状态改变来调用函数。

 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4     <meta charset="UTF-8"> 5     <script src="js/jquery-1.11.3.js"></script> 6     <title></title> 7 </head> 8 <body> 9 10 <select name="" id="qq" onchange="outputSelect()">11     <option value="1">qq</option>12     <option value="2">bbb</option>13     <option value="3">ccc</option>14 </select>15 <div>16 <div class="con" style="display:none">111</div>17 <div class="con" style="display:none">222</div>18 <div class="con" style="display:none">333</div>19 </div>20 <script>21     $(".con").eq(0).show();22     function outputSelect(){23         console.log("aa");24         var num =$("#qq").find("option:selected").index();25         console.log(num);26         $(".con").hide();27         $(".con").eq(num).show().siblings().hide();28     }29 30     console.log($("#qq").find("option:selected").val());31     var aa=$("#qq option:selected").val();32     console.log(aa);33 </script>34 </body>35 </html>
登录后复制

虽然onchange在某些时刻可以代替 option的click事件, 但是两者并无法做到完全等价. 因为onchange只有在 你点击的option和之前的option不同时才会触发. 当select当前选中的是第一项  而你再次点击第一项时, select是不会被触发的.

下面的代码演示了一种间接实现 option onclick的方法 
登录后复制
注意:此方案只适用于 下拉方式的单选select.
登录后复制

 1     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   2     <html>   3      <head>   4       <title>select-option onclick </title>   5     <script type="text/javascript" >   6        7     function simOptionClick4IE(){   8         var evt=window.event  ;   9         var selectObj=evt?evt.srcElement:null;  10         // IE Only  11         if (evt && selectObj &&  evt.offsetY && evt.button!=2  12             && (evt.offsetY > selectObj.offsetHeight || evt.offsetY<0 ) ) {  13                   14                 // 记录原先的选中项  15                 var oldIdx = selectObj.selectedIndex;  16       17                 setTimeout(function(){  18                     var option=selectObj.options[selectObj.selectedIndex];  19                     // 此时可以通过判断 oldIdx 是否等于 selectObj.selectedIndex  20                     // 来判断用户是不是点击了同一个选项,进而做不同的处理.  21                     showOptionValue(option)  22       23                 }, 60);  24         }  25     }  26       27     function showOptionValue(opt,msg){  28         var now=new Date();  29         var dt= (1900+now.getYear())+'-'+(now.getMonth()+1)+'-'+now.getDate()+  30                 ' '+now.getHours()+':'+now.getHours()+':'+now.getSeconds()+'.'+now.getMilliseconds();  31         var resultZone=document.getElementById('reslut');  32         resultZone.style.margin="10px";  33         resultZone.innerHTML=dt +" 时,点击了: " + (opt.text + ' = '+opt.value);  34     }  35       36     </script>  37      </head>  38       39      <body>  40       41       <select  onclick="simOptionClick4IE()" >   42         <!-- 下面的 onclick="showOptionValue( this )" 是为 ff 和 opera而准备 -->  43         <option value="1" onclick="showOptionValue( this )" >aaaaa</option>  44         <option value="2" onclick="showOptionValue( this )" >bbbbb</option>  45         <option value="3" onclick="showOptionValue( this )" >ccccc</option>  46       </select>  47       48     <div id="reslut" ></div>  49     </body>  50     </html>  
登录后复制

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

 

立即学习前端免费学习笔记(深入)”;

才知道),在IE里,select的option是不支持onclick事件的, 而在 FF 和 OPERA 里, option 是支持onclick事件的. (似乎也不支持,不过暂时我还不知道如何解决safari的问题.)

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号