使用jQuery从select中删除选项

spg*_*spg 0 html jquery dom dom-manipulation

假设我有一个Select元素:

<select>
    <option value="Name 1">Simon</option>
    <option value="Name 2">Frank</option>
    <option value="Name 3">Bob</option>
    <option value="Name 4">Alex</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我有一个字符串数组,假设:

["Simon", "Alex"]
Run Code Online (Sandbox Code Playgroud)

如何从DOM(使用jQuery)每删除option元素,它不会有一个内部HTML包含在以上列表值?例如,给定上面的内部html值(["Simon", "Alex"])列表,我想只删除<option value="Name 2">Frank</option><option value="Name 3">Bob</option>元素,以便最终select元素看起来像:

<select>
    <option value="Name 1">Simon</option>
    <option value="Name 4">Alex</option>
</select>
Run Code Online (Sandbox Code Playgroud)

PSL*_*PSL 7

试试这个:

var list = ["Simon", "Alex"]; // Say your list is this

$(function(){

    $('select option').filter(function () { //Use filter on options
       return $.inArray(this.innerHTML, list) == -1 // get the option text which is not in the array
    }).remove(); //Remove them
});
Run Code Online (Sandbox Code Playgroud)

演示

参考

与此同时,您还可以使用ecmascript-5 spec Array.prototype.indexOf代替$ .inArray

return list.indexOf(this.innerHTML) == -1