1

我有几个checkbox lists,每次用户选中或取消选中任何复选框时,我都需要更新它们。有些列表可能包含数千个checkboxes.

由于创建新元素很慢,我想避免它。因此,在更新期间,我没有删除它们,而是将对元素的引用保存到堆栈中。

这是代码的摘录:

// Save element to buffer. Each element looks like <div><input type="checkbox" /><label>label here</label></div>
while (checkBoxList.firstChild) {
    var div = checkBoxList.firstChild;
    buffer.push(div);
    checkBoxList.removeChild(div);
}

// elided ...

// Getting the new options...
// For each new option try to pop existing element from buffer or create new one if       buffer has no elements

var div = buffer.pop();
var divExists = div != undefined;
var checkBox = divExists ? div.firstChild : document.createElement('input');
var label = divExists ? div.lastChild : document.createElement('label');

checkBox.id = newId; // set new id
checkBox.name = newName; // set new name
checkBox.value = newValue // set new value

// elided...

// Append updated (or created one) to checkbox list
checkBoxList.appendChild(div);

这种技术工作正常,但在IE我得到以下问题:checkboxes出现蓝色,好像鼠标会悬停在它们上面(see the screenshot at http://postimage.org/image/z6yeckuz5/).

有没有人遇到过类似的问题?为什么会发生这种情况?

4

0 回答 0