从select中删除和恢复选项


Remove and restore options from select

我有html:

<select id="sel">
    <option value="1">aaa</option>
    <option value="2">bbb</option>
    <option value="3">ccc</option>
    <option value="4">ddd</option>
    <option value="5">eee</option>
    <option value="6">fff</option>
    <option value="7">ggg</option>
</select>
<button id="remove">remove</button>
<button id="restore">restore</button>

和javascript:

function rand(){
return Math.floor(Math.random() * 7) + 1;
}
function deleteRandom(){
$.each([rand(), rand(), rand()], function( index, value ) {
  $("#sel option[value=" + value + "]").remove();
    //here should be saved...
});
}
function restore(){
 //this function should restore #sel
}
$("#remove").click(function(){
   deleteRandom();
})
$("#restore").click(function(){
   restore();
})

现场演示:http://jsfiddle.net/g4Q8B/

保存删除选项的最佳方法是什么?我不想使用隐藏、显示:无等,因为这不是在所有浏览器中都可以使用的。我不想也使用残疾人。

我想删除此选项,然后从select中保存下一个或上一个保存所有选项。也许我应该保存所有选择#sel,但如何保存?

最好的方法是在页面加载时存储选项的克隆。然后克隆该克隆以进行恢复,因此始终将第一个克隆作为缓存。

var $options=$('#sel option').clone();
function restore(){
 $('#sel').html( $options.clone()) 
}

演示

现在如果你想做任何选项的过滤,也可以在缓存上做,你总是有完整的存储

$('#filtered').click(function(){
    /* only options with value > 3*/
    var opts=$options.clone().filter(function(){
       return this.value > 3; 
    })
    $('#sel').html(opts)    
})