解决IE下select option不支持display none样式

匿名 (未验证) 提交于 2019-12-02 21:53:52

万恶的IE,option竟然不支持display样式,想到的解决思路有二个:

  1、ajax联动查询

  2、jQuery的remove()、after()方法

方法1的不好之处是初始页面,需要显示全部IP,本来已经从后台查询了一次,如果再利用ajax,会给服务器造成压力,所以采用方法2。

后台code

// 获取所有平台类型IP$vcenter_ip = $this->vcenter_mgr->get_vcenter_info(null, null, 'ip, virt_type', 'INET_ATON(ip)'); $virt_ip = array(); if (!empty($vcenter_ip)) {    foreach ($vcenter_ip as $arr) {         $virt_ip[]= array(             'virt_type' => $arr['virt_type'],             'virt_ip' => $arr['ip'],         );     } } exit(json_encode($virt_ip));

前端code

// 初始时显示所有IP var virt_ip_obj = <?= $virt_ip ?>; // 后台返回的json数据var virt_ip_opt = ''; if (virt_ip_obj.length > 0) {     $.each(virt_ip_obj, function(index, val) {         virt_ip_opt += '<option class="ip_opt" value="'+val.virt_ip+'">'+val.virt_ip+'</option>';     }); } $('.virt_ip option:first').after(virt_ip_opt);  // change事件 $('.adv-table').on('change', '.tts-options', function(event) {     var virt_type = $(this).val();     $('select .ip_opt').remove(); // 移除所有option项     if (virt_type > 0) {         var new_ip_opt = '';         if (virt_ip_obj.length > 0) {             $.each(virt_ip_obj, function(i, arr) {                 if (arr.virt_type === virt_type) {                     new_ip_opt += '<option class="ip_opt" value="'+arr.virt_ip+'">'+arr.virt_ip+'</option>';                 }             });         }         $('.virt_ip option:first').after(new_ip_opt); // 选择指定平台时只显示指定平台下的所有IP     } else {         $('.virt_ip option:first').after(virt_ip_opt); // 选择所有平台时,显示全部IP     } });

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!