最近、IE10でjqueryを開発していましたが、jqueryのコンボボックスの複数選択の互換性がない問題についてまとめました。
コンボボックスの属性 "multiple:true" を設定すると、IE10 は複数選択を完了できず、次のようなエラーが表示されます:
function _7e8(_7e9,_7ea){
var _7eb=$.data(_7e9,"combobox"); 🎜>var opts=_7eb.options ;
var _7ec=$(_7e9).combo("getValues");
var _7ed=_7ec.indexOf(_7ea "");//ここで 10650 行目にエラーが報告されました
if(_7ed>=0) {
_7ec.splice(_7ed,1);
つまり、この問題には、indexOf メソッドがサポートされていません。解決策:
1. ソース コードを変更します
上記のコードを
に変更します。
function _7e8(_7e9,_7ea){ var _7eb =$.data(_7e9,"combobox");
var opts=_7eb.options;
var _7ec=$(_7e9).combo("getValues"); ,str){
str = str "";
for(var i =0,l=arr.length;iif(arr[i] == str) return i;
}
return
})(_7ec ,_7ea); 2013-6-25 19:04 に更新
_7ec.splice(_7ed,1);
_7e9,_7ec)
2. メソッド
コードをコピーします
コードは次のようになります: if(!Array.prototype.indexOf){ 配列.prototype.indexOf = function(target){ for(var i=0,l =this.length;i
if(this[i] === target) return i; }
return -1;
}
}
実際には、最初の方法の方が便利なので、私は最初の方法を使用します。