如何搜索值可能在字符串中带有“或”的选项?

时间:2013-05-16 00:42:48

标签: javascript jquery

<select id='test' size='1'><option value='this&#34;'>this&#34;</option></select>

这些都不起作用:

if ($('#test option[value="this&#34;"]').length == 0 ) {
   $('body').append('true');
}
else {$('body').append('false');}
if ($("#test option[value='this&#34;']").length == 0 ) {
   $('body').append('true');
}
else {$('body').append('false');}

FIDDLE

修改

问题可能过于简化。值字符串实际上是从另一个源派生的变量,因此我不知道在哪里添加转义字符。

我原以为:var temp = mySTRING.replace('\"','\\\"');会有效,但事实并非......

2 个答案:

答案 0 :(得分:2)

使用转义字符匹配引号。

if ($("#test option[value='this\"']").length == 0 ) {
    $('body').append('true');
}
else {$('body').append('false');}

<强>更新

为了响应您的更新,您说值字符串在变量中,因此您可以使用转义字符替换它。

var value = "this&#34;";
value = value.replace("&#34;", "\"");

if ($("#test option[value='" + value  + "']").length == 0 ) {
    $('body').append('true');
}
else {$('body').append('false');}

检查working JsFiddle here

答案 1 :(得分:2)

您可以将过滤器功能与正则表达式一起使用,以获取包含'"

的值的所有选项
var x = $('#test option').filter(function () {
    return /'|"/.test(this.value);
});
if (x.length) {
    $('body').append(x.length + ' true');  
} else {
    $('body').append('false');
}

FIDDLE