我在表td(8“& 12”)
中有以下文字我的代码是
var match = $('#table_body > tr > td:contains("' + searchterm + '")');
当我试图找到(8“& 12”)时出现以下错误
错误:语法错误,无法识别的表达式:: contains(“”)“
最后一个“)两个字符正在创建问题是什么解决方案我尝试转义字符串(添加斜杠)错误消失了但没有搜索结果用这个
答案 0 :(得分:0)
如果您使用td:contains('some text with "quotes"')
周围的单引号,它就有效。该文档未列出使用双引号作为有效替代方法。请注意,您并不需要周围的引号,您可以只使用裸字。无论您的文字是包含单引号还是双引号,都可以使用。
var match = $("#table_body > tr > td:contains('" +searchterm+ "')");
// or without quotes altogether
var match = $("#table_body > tr > td:contains(" +searchterm+ ")");
示例:强>
var text = '8" 12"';
var text2 = '5" 6"'
var text3 = '2\' 4"';
var text4 = "Testing (1' 3')";
// Quotes are allowed
$("div:contains('"+text+"')").css('background-color', 'red');
// But not necessary
$("div:contains("+text2+")").css('background-color', 'yellow');
// Works with mixed single and double quotes
$("div:contains("+text3+")").css('background-color', 'gray');
// However, it doesn't support parentheses, you'll have to search it yourself
// And make sure you escape regex special characters
// Escapes any special characters
RegExp.escape = function(s, flags) {
return new RegExp(s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), flags);
};
console.log(RegExp.escape("1' 3')"))
$('div').filter(function(i, el) {
return $(el).text().match(RegExp.escape("1' 3')"));
}).css('background-color', '#fef0e4');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>8" 12"</div>
<div>5" 6"</div>
<div>2' 4"</div>
<div>1' 3')</div>
&#13;