0


喜んでウィジェットを書いていたとき、突然 IE (7-9) が私の一日を台無しにしました。
一部のウィジェットは、選択ボックスを非表示にし、内部に div、ul を作成し、選択オプションに従って li で塗りつぶします。また、私のウィジェットは値をソートしますが、ここで問題が発生します。IE はリスト要素からすべての innerText を削除するため、空白の <li /> が表示されます。
それを修正する方法はありますか?それは本当に面倒です:(。例を含むjsfiddleへのリンクは次のとおりです: http://jsfiddle.net/g8Cd6/
コード:
HTML:

<select multiple="multiple" id="picked">
    <option>a</option>
    <option>b</option>
    <option>c</option>
    <option>d</option>
    <option>e</option>
</select>

JavaScript:

jQuery.fn.pick = function(sort) {
    console.log("pick_v2");
    var pick = this;
    this.widget = $('<div class="pick widget"></div>').insertAfter(this);
    this.list = $('<ul class="pick list"></ul>');
    this.widget.append(this.list);
    this.host = $(this).hide();
    var opts = this.host.children();

    for (var i = 0; i < opts.length; i++) {
        this.list.append('<li>' + opts.eq(i).text() + '</li>');
    }

    this.sort = function(container) {
        var my_options = container.children();
        my_options.sort(function(a,b) {
            if ($(a).text() > $(b).text()) return 1;
            else if ($(a).text() < $(b).text()) return -1;
            else return 0;
        });
        container.html("");
        for (var i = 0; i < my_options.length; i++) {
            console.log(my_options[i].innerText)
            container.append( my_options[i] );
        }
    };
    pick.sort(this.list);
};

$("#picked").pick(true);


アドバイスありがとう、ドラコ

4

0 に答える 0