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

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

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

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script src="js/jquery-1.11.3.js"></script>
<title></title>
</head>
<body> <select name="" id="qq" onchange="outputSelect()">
<option value="1">qq</option>
<option value="2">bbb</option>
<option value="3">ccc</option>
</select>
<div>
<div class="con" style="display:none">111</div>
<div class="con" style="display:none">222</div>
<div class="con" style="display:none">333</div>
</div>
<script>
$(".con").eq(0).show();
function outputSelect(){
console.log("aa");
var num =$("#qq").find("option:selected").index();
console.log(num);
$(".con").hide();
$(".con").eq(num).show().siblings().hide();
} console.log($("#qq").find("option:selected").val());
var aa=$("#qq option:selected").val();
console.log(aa);
</script>
</body>
</html>

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

下面的代码演示了一种间接实现 option onclick的方法 
注意:此方案只适用于 下拉方式的单选select.
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>select-option onclick </title>
<script type="text/javascript" > function simOptionClick4IE(){
var evt=window.event ;
var selectObj=evt?evt.srcElement:null;
// IE Only
if (evt && selectObj && evt.offsetY && evt.button!=2
&& (evt.offsetY > selectObj.offsetHeight || evt.offsetY<0 ) ) { // 记录原先的选中项
var oldIdx = selectObj.selectedIndex; setTimeout(function(){
var option=selectObj.options[selectObj.selectedIndex];
// 此时可以通过判断 oldIdx 是否等于 selectObj.selectedIndex
// 来判断用户是不是点击了同一个选项,进而做不同的处理.
showOptionValue(option) }, 60);
}
} function showOptionValue(opt,msg){
var now=new Date();
var dt= (1900+now.getYear())+'-'+(now.getMonth()+1)+'-'+now.getDate()+
' '+now.getHours()+':'+now.getHours()+':'+now.getSeconds()+'.'+now.getMilliseconds();
var resultZone=document.getElementById('reslut');
resultZone.style.margin="10px";
resultZone.innerHTML=dt +" 时,点击了: " + (opt.text + ' = '+opt.value);
} </script>
</head> <body> <select onclick="simOptionClick4IE()" >
<!-- 下面的 onclick="showOptionValue( this )" 是为 ff 和 opera而准备 -->
<option value="1" onclick="showOptionValue( this )" >aaaaa</option>
<option value="2" onclick="showOptionValue( this )" >bbbbb</option>
<option value="3" onclick="showOptionValue( this )" >ccccc</option>
</select> <div id="reslut" ></div>
</body>
</html>

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

最新文章

  1. 使用PHP将长文章分页
  2. C#传真传址 结构体
  3. php常用函数汇总
  4. 关于在biweb 中安装完成后 首页上方报错问题的解决
  5. how to check unsolved conflicts file list in git merge?
  6. HBase-配置说明
  7. Xcode的后缀字母的意思是
  8. Android开发之异步消息处理机制AsyncTask
  9. FolderBrowserDialog
  10. Qt学习(四)—实例涂鸦画板mspaint
  11. ng-cli
  12. DotNetCore跨平台~为Lind.DotNetCore框架添加单元测试的意义
  13. 应用canvas绘制动态时钟--每秒自动动态更新时间
  14. MySQL基础使用
  15. Java_运算符
  16. js 翻牌活动效果
  17. 机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)
  18. python贡献度分析20/80定律
  19. Leetcode 344.反转字符串 By Python
  20. python学习笔记-学习大纲

热门文章

  1. [UWP]涨姿势UWP源码——Unit Test
  2. Hadoop阅读笔记(四)——一幅图看透MapReduce机制
  3. Mybatis逆向生成
  4. java类加载器-系统类加载器
  5. python数据库(mysql)操作
  6. Python性能提升小技巧
  7. 利用Travis CI 让你的github项目持续构建
  8. Dapper学习 - Dapper.Rainbow(二) - Update/Delete
  9. 瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别
  10. WIN-CE系统架构