使用大量选择选项解析/筛选javascript字符串

使用大量选择选项解析/筛选javascript字符串,javascript,jquery,Javascript,Jquery,我在js中有一个var,如下所示: var string = "<option value="1">A</option> <option value="2">B</option> <option value="3">C</option> <option value="1">D</option> <option value="2">E</option> <option v

我在js中有一个var,如下所示:

var string = 
"<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="1">D</option>
<option value="2">E</option>
<option value="3">F</option>
<option value="1">G</option>
<option value="2">H</option>
<option value="3">I</option>
<option value="1">K</option>
<option value="2">L</option>
<option value="3">M</option>"
我想创建一个代码来解析它/做一个过滤器,以便使用我选择的val=value保留一个新的var-only选项

因此,我想要得到的结果,例如,对于value=1,如下所示:

"<option value="1">A</option>
<option value="1">D</option>
<option value="1">G</option>
<option value="1">K</option>"
你知道怎么做吗


非常感谢

最好将其保留为一组jQuery元素:

var $options = $(string);
var filteredString = $('<select/>').html(string).find('option').filter(function() {
    return this.value !== '1';
}).remove().end().end().html();
然后使用jQuery方法获取所需的:

var $wanted = $options.filter(function() {
    return this.value == 1;
});

请参见

您最好将其作为一组jQuery元素:

var $options = $(string);
var filteredString = $('<select/>').html(string).find('option').filter(function() {
    return this.value !== '1';
}).remove().end().end().html();
然后使用jQuery方法获取所需的:

var $wanted = $options.filter(function() {
    return this.value == 1;
});

请参见

您可以将字符串传递给jQuery并使用.filter方法

如果需要元素的字符串表示形式:

var $options = $(string);
var filteredString = $('<select/>').html(string).find('option').filter(function() {
    return this.value !== '1';
}).remove().end().end().html();

您可以将字符串传递给jQuery并使用.filter方法

如果需要元素的字符串表示形式:

var $options = $(string);
var filteredString = $('<select/>').html(string).find('option').filter(function() {
    return this.value !== '1';
}).remove().end().end().html();
试试这个

var string = 
"<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="1">D</option>
<option value="2">E</option>
<option value="3">F</option>
<option value="1">G</option>
<option value="2">H</option>
<option value="3">I</option>
<option value="1">K</option>
<option value="2">L</option>
<option value="3">M</option>"


var elements = $(string);
var requiredelements = elements.filter("option[value=1]").html();
试试这个

var string = 
"<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="1">D</option>
<option value="2">E</option>
<option value="3">F</option>
<option value="1">G</option>
<option value="2">H</option>
<option value="3">I</option>
<option value="1">K</option>
<option value="2">L</option>
<option value="3">M</option>"


var elements = $(string);
var requiredelements = elements.filter("option[value=1]").html();


@普鲁士-EWW!!!使用jQuery要容易得多:另外,我希望这不是从现有脚本复制粘贴的,它在语法上很可怕@Archer我怀疑,它甚至不是合法的JS双引号,包含字符串和string@Alnitak注意一个问题,为什么这个字符串不起作用p@Archer在这一点上,我将把OP指向我的JSFIDLE,我已经把它修好了…@Prusse-eww!!!使用jQuery要容易得多:另外,我希望这不是从现有脚本复制粘贴的,它在语法上很可怕@Archer我怀疑,它甚至不是合法的JS双引号,包含字符串和string@Alnitak注意一个问题,为什么这个字符串不起作用p@Archer在这一点上,我将把OP指向我的JSFIDLE,在这里我已经修复了它…与使用selectorAFAIK jQuery/Sizzle无法将对任意元素集的测试优化为对querySelectorAllIt返回对象的单个调用相比,更好的方法是基于.value属性的直接测试进行筛选,你知道如何返回字符串吗?@ArnauddeVslt你为什么想要字符串?如果您要做的只是将这些选项添加到页面中,那么同样符合我的答案和JSFIDLE的jQuery对象会更有效。@Alnitak是的,在大多数情况下,使用.filter的回调函数比使用“字符串”选择器更有效,不幸的是,一些程序员认为,当某个元素较短时,它会更快/更高效。与使用selectorAFAIK jQuery/Sizzle相比,基于.value属性的直接测试进行筛选更好。无法将对任意元素集的测试优化为对querySelectorAllIt返回对象的单个调用,你知道如何返回字符串吗?@ArnauddeVslt你为什么想要字符串?如果您要做的只是将这些选项添加到页面中,那么同样符合我的答案和JSFIDLE的jQuery对象会更有效。@Alnitak是的,在大多数情况下,使用.filter的回调函数比使用“字符串”选择器更有效,不幸的是,一些程序员认为,当某个字符串较短时,它会更快/更高效。为什么要将其转换回序列化的HTML?没错,问题表明,但我更希望OP只是将该字符串插入到DOM中……我想你指的是.HTML而不是.innerHTML。这样的方法不存在。为什么要将其转换回序列化HTML?没错,问题是这样的,但我更希望OP只是将该字符串插入到DOM中……我想你是指.HTML而不是.innerHTML。这种方法并不存在。