0


我正在愉快地编写一个小部件,突然 IE (7-9) 毁了我的一天。
小部件在某些地方隐藏了一个选择框,在里面制作了一个div,ul并根据选择选项用li填充它。我的小部件也对值进行排序,问题就来了。IE 会从列表元素中删除所有的 innerText,因此它会显示 n 个空白 <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