• 技术文章 >web前端 >html教程

    select中无法使用click的处理 - 嗑瓜子儿gf

    2016-05-20 13:46:37原创690

    今天工作用到了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">qqoption>
    12     <option value="2">bbboption>
    13     <option value="3">cccoption>
    14 select>
    15 <div>
    16 <div class="con" style="display:none">111div>
    17 <div class="con" style="display:none">222div>
    18 <div class="con" style="display:none">333div>
    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           
    43         <option value="1" onclick="showOptionValue( this )" >aaaaaoption>  
    44         <option value="2" onclick="showOptionValue( this )" >bbbbboption>  
    45         <option value="3" onclick="showOptionValue( this )" >cccccoption>  
    46       select>  
    47       
    48     <div id="reslut" >div>  
    49     body>  
    50     html>  

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:select中无法使用click的处理 - 嗑瓜子儿gf
    上一篇:实现bootstrap布局的input输入框中的图标点击功能 - hello八戒 下一篇:表格table嵌套,边框合并问题 - 简一118
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• Codeforces Round#263(Div.2)_html/css_WEB-ITnose• bootstrap问题 高手在哪里?_html/css_WEB-ITnose• 如何向当前的html文档输入一段字符_html/css_WEB-ITnose• AngularJS在IE8的支持_html/css_WEB-ITnose• 引入外部CSS的两种方式及区别_html/css_WEB-ITnose
    1/1

    PHP中文网