我对.search有一点问题
这是代码
// filter - posts
jQuery('.filter_by').live('click',function(){
var target_fi = jQuery(this);
var target_cat = target_fi.parents('.cat').children('.namechanger').val();
target_fi.next().fadeIn(100);
var cat_all = target_fi.prev().find("option").each(function(i){
if(jQuery(this).attr('data-cats').search(target_cat) == -1){
jQuery(this).css({"display":"none"});
}
});
});
我想将变量target_cat
与.search
我不能这样做.search(/target_cat/)
答案 0 :(得分:1)
如果你想使用target_cat
的字符串值创建正则表达式,那么你可以这样做:
var mySearchTerm = new RegExp(target_cat);
...
if(jQuery(this).attr('data-cats').search(mySearchTerm) == -1){
答案 1 :(得分:1)
您需要创建RegExp
对象并将其传递给search
方法
if(jQuery(this).attr('data-cats').search(new RegExp(target_cat)) == -1 )){
...
}
答案 2 :(得分:1)
要将任何转换为正则表达式,只需将其放入构造函数中:
var something =“foobar”; var expression = new RegExp(something,'i');
注意标志的第二个参数。有关构造函数的详细信息,请参阅RegExp;有关工作原理的详细信息,请参阅Regular Expressions。
如果您的something
包含“特殊字符”(例如|
,?
,{
),则需要将其转义,如果您希望它们的字面意思是(/foo?/
与/foo\?/
)。这是一个能够为您解决所有相关角色的功能:
function escapeRegEx(string) {
return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
}