我正在使用 jQuery 选择器来检查 href 中的字符:
var param = "something";
$("a[href*="+param+"]").css("color", "red");
这工作正常,直到“某物”包含 = 符号。例如:
var param = "xkey=123";
$("a[href*="+param+"]").css("color", "red");
然后我没有结果。有人知道解决方案吗?
引用参数:
$("a[href*='"+param+"']")
如果这还不够(param
可能包含撇号)然后转义它们:
$("a[href*='"+param.replace(/'/g,"\\'")+"']")
你需要逃避=
with \\=
。
param = param.replace(/=/g, '\\\\=');
但是在 jQuery 选择器中还需要转义其他特殊字符。
function escape(param) {
return param.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g,'\\\\$1');
}
您也可以使用该.filter
方法。
$('a').filter(function() {
return $(this).attr('href').indexOf(param) !== -1;
})
它的行为是这样的,因为最后它会转化为模棱两可的选择器,即$("a[href*=xkey=123]")
确实是无效的。
用 infront 转义等号\\
并用引号包裹参数部分
var param = "xkey\\=123";
$("a[href*='"+param+"']").css("color", "red");
您可以像这样验证它:
希望它适合原因:)
foo - 是字符串;
if (! /^[a-zA-Z0-9]+$/.test(foo)) {
// Validation failed
}
或者
像这样检查逃脱它:
if(your_string.indexOf('=') != -1){
alert("equal found.");
}
然后替换=
为\\=