我正在愉快地编写一个小部件,突然 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);
谢谢你的建议,德拉科