Jquery代码在windows上工作,但不能在Mac或Safari上工作

Jquery code working on windows but not on Mac or Safari

本文关键字:工作 Mac Safari 但不能 代码 Jquery windows      更新时间:2023-09-26

下面的函数从所有其他选择菜单中删除选中的选项,它在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");   

你所看到的是浏览器在选择列表样式上的差异。一些浏览器允许你做一些事情,比如改变背景颜色。有些人不会,这就是为什么这是一个糟糕的方法。只需使用disabled状态即可。

http://jsfiddle.net/o9qgmut8/