0

選択ドロップダウン メニューがあります。ページを更新するたびに、その選択ドロップダウンを再入力する必要があります。これにより、メモリリークが発生します。これは、コードのリファクタリングに役立つコードです。また、別のメソッドを作成しようとしましたが、このメソッドの前にそれを呼び出すと、他のメソッドはオプション配列を空にして null にします。それは私を助けませんでした。

    var option = $(document.createElement("option"));
    option.attr("value", List.id);
    option.text(List.name);
        if(List.name.length > maxSize) {
            maxSize = List.name.length;
        }
        this.options.push(option);

        //Mark the currently displayed list as the selected option
        if (activeListId > 0) {
            if (activeListId == List.id) {
                option.attr("selected", true);
            }
        }
    }

    Toolbar.ListSelect.append(this.options);
4

2 に答える 2

0

何が何であるかを知ることができるように、周囲のコードをさらに含めていただければ非常に役立ちますが、現在の状況を考えると、これが私のベストショットです.

// Reference box
var $box = $('#id-of-select-box');

// Clear select box
$box.empty();

// START LOOP

// Create new option
var $option = $('<option value="'+List.id+'">"'+List.name+'"</option>');

// Append option to select box
$box.append($option);

// END LOOP

//Mark the currently displayed list as the selected option
if (activeListId > 0) {
    $box.val(activeListId);
}
于 2013-06-13T14:40:09.620 に答える
0

新しい要素を作成し、スライスを使用して maxSize を超える場合は、提供された名前を切り取ることをお勧めします)。後で、activeListId と List.id が一致する場合は、"selected" パラメーターを追加します。後で、新しいオプションを Toolbar.ListSelect に追加します (要素であると思います

var option = jQuery("<option />").attr('value', List.id);
var optionName = List.name.slice(maxSize);
option.text(optionName);
if ( activeListId && activeListId == List.id)
    option.attr("selected", true);
option.appendTo(Toolbar.ListSelect)
于 2013-06-13T14:35:17.917 に答える