Javascript jquery find中的转义括号

Javascript jquery find中的转义括号,javascript,jquery,Javascript,Jquery,以下是我所拥有的: item.find('div:contains(' + name + ')') 但是,在某些情况下,名称包含括号。在一种情况下,name具有以下值: "brown (ok xl (1))" 和item.find('div:contains('+name+'))不起作用。括号就是问题所在。如何逃离他们 与属性值选择器一样,可以将:contains()括号内的文本写成裸字或用引号括起来 所以简单地使用 item.find('div:contains(\'' + name +

以下是我所拥有的:

item.find('div:contains(' + name + ')')
但是,在某些情况下,名称包含括号。在一种情况下,name具有以下值:

"brown (ok xl (1))"
和item.find('div:contains('+name+'))不起作用。括号就是问题所在。如何逃离他们

与属性值选择器一样,可以将:contains()括号内的文本写成裸字或用引号括起来

所以简单地使用

item.find('div:contains(\'' + name + '\')')
/* or */
item.find('div:contains("' + name + '")')
请注意,如果有引号,则需要在
name
中转义其他引号

与属性值选择器一样,可以将:contains()括号内的文本写成裸字或用引号括起来

所以简单地使用

item.find('div:contains(\'' + name + '\')')
/* or */
item.find('div:contains("' + name + '")')

请注意,如果您有任何问题,您需要在
name
中去掉额外的引号。

几天前我也遇到过同样的问题,但出于某种奇怪的原因@Zeta的解决方案对我不起作用,所以我想出了一个解决方案

name = name.replace(/(\(|\)).*/g,"");
item.find("div:contains(" + name +")");
它并不完美,但很有效:)

编辑

更好的正则表达式:

name = "(d)test thingie(assaf)(asdads".replace(/\(([^\)])*\)/g,"$1 ").replace(/\(|\)(.)*/g,"$1 ");
如果要删除括号之间的所有内容,以便包含可以使用的工作:

name = "(d)test thingie(assaf)(asdads".replace(/\(([^\)])*\)/g,"").replace(/\(|\)(.)*/g,"");

几天前我也有同样的问题,但出于某种奇怪的原因,@Zeta的解决方案对我不起作用,所以我想出了一个解决方案

name = name.replace(/(\(|\)).*/g,"");
item.find("div:contains(" + name +")");
它并不完美,但很有效:)

编辑

更好的正则表达式:

name = "(d)test thingie(assaf)(asdads".replace(/\(([^\)])*\)/g,"$1 ").replace(/\(|\)(.)*/g,"$1 ");
如果要删除括号之间的所有内容,以便包含可以使用的工作:

name = "(d)test thingie(assaf)(asdads".replace(/\(([^\)])*\)/g,"").replace(/\(|\)(.)*/g,"");

若要将任何元字符
(例如!“$%&'()*+,./:;?@[\]^'{124}~)
用作名称的文字部分,必须使用两个反斜杠进行转义:
\
例如,具有
id=“foo.bar”
的元素可以使用选择器
$(“\foo\.bar”)

下面是一个函数,用于转义特殊字符并返回有效的jQuery选择器。请在使用前将字符串传递给此函数:

function jqSelector(str)
{
    return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
}

若要将任何元字符
(例如!“$%&'()*+,./:;?@[\]^'{124}~)
用作名称的文字部分,必须使用两个反斜杠进行转义:
\
例如,具有
id=“foo.bar”
的元素可以使用选择器
$(“\foo\.bar”)

下面是一个用于转义特殊字符并返回有效jQuery选择器的函数。使用前将字符串传递到此函数:

function jqSelector(str)
{
    return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
}

尝试以下操作:
“brown\(ok xl\(1\)\”
不应使用选择器中的double\进行转义?@PraveenKumar name在运行时获取其值。如果将标题从jquery find中的
转义括号更改为jquery contains中的
转义括号
。尝试以下操作:
“brown\(ok xl\(1\)\)”
不应使用选择器中的double\进行转义?@PraveenKumar name在运行时获取其值。如果将标题从jquery find
中的
转义括号更改为jquery contains
中的
转义括号,效果会更好。例如:“(D)Room.”replace(/(|)).*/g,“”)返回“”。现在呢?添加到新的正则表达式中,无论哪个解决了您的问题,第二个都应该!对于本例:“(D)Room”.replace(/(|)).*/g,”)返回“”。现在呢?添加到新的正则表达式中,无论哪个解决了您的问题,第二个都应该!它不转义括号它不转义括号