
[英]Jquery code not working in mac os chrome but working in windows 10 chrome
[英]Jquery code working on windows but not on Mac or Safari
以下功能从所有其他选择菜单中删除了所选选项,该功能在Windows chrome和firefox上效果很好,但在Safari或Mac上效果不佳。
您是否知道可能导致此问题的原因?
HTML代码:
<select>
<option>slelect</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<select>
<option>slelect</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<select>
<option>slelect</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<select>
<option>slelect</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
jQuery代码:
(function () {
var previous;
$("select").on('focus', function () {
previous = this.value;
}).change(function(){
$elm = $(this).children('option:selected');
$a = $elm.val();
$('option[value=' + $a + ']').not($elm).hide();
$('option[value=' + previous + ']').not($elm).show();
});
})();
这是因为.hide()只是将display:none css属性添加到选项中。问题出在以下几行中:
$('option[value=' + $a + ']').not($elm).hide();
$('option[value=' + previous + ']').not($elm).show();
如果我们将其更改为使用禁用状态,它将按预期工作
$('option[value=' + $a + ']').not($elm).attr('disabled', 'disabled');;
$('option[value=' + previous + ']').removeAttr("disabled");
您看到的是浏览器在允许选择列表样式方面的差异。 某些浏览器允许您执行诸如更改背景颜色的操作。 有些则不然,这就是为什么这种方法不好的原因。 只需使用禁用状态即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.