1

チェックボックスのクリックで以下のコードを実行する必要があります

            for (i = 0; i < dropDownCtrl.length; i++) {

                $("#dropDownCtrl option[value='" + dropDownCtrl[i].objName + "']").remove();
           }

ただし、dropDownCtrl.length の値が大きいため、IE7 で「このスクリプトの実行を停止してください」というメッセージが表示されます。

以下の URL に記載されているコードに私のコードを統合する方法を教えてください。

http://www.picnet.com.au/blogs/Guido/post/2010/03/04/How-to-prevent-Stop-running-this-script-message-in-browsers

助けてください。

4

2 に答える 2

3

ステップ 1: jQuery を使用しないでください

var opts = document.getElementById('dropDownCtrl').options, lookup = {},
    l = dropDownCtrl.length, i;
// first use "lookup" as a quick lookup table - otherwise we'd have O(n*m) !
for( i=0; i<l; i++) lookup[dropDownCtrl[i].objName] = true;
// now we can do this in O(n+m), much better.
l = opts.length;
for( i=0; i<l; i++) {
    if( lookup[opts[i].value]) opts.parentNode.removeChild(opts[i]);
}

タダ!はるかに速くなるはずです。

于 2013-11-08T09:19:45.787 に答える
1

jQueryUI Multi Select コントロールを使用しているため、CheckAll が問題を引き起こしています。.each() を、タイムアウトの原因となっていた_toggleCheckedイベントの for ループに置き換えようとしました。変更後、スクリプトエラーなしで正常に動作します。

this.element
    .find('option')
    .each(function() {
     //if(!this.disabled && $.inArray(this.value, values) > -1) {
        self._toggleState('selected', flag).call(this);
      //}
    });
于 2013-11-14T01:12:36.840 に答える