1

.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/)

4

3 に答える 3

1

何かを正規表現に変換するには、単純にコンストラクターにドロップします。

var something = "foobar"; var expression = new RegExp(something, 'i');

flags の 2 番目の引数に注意してください。コンストラクターの詳細についてはRegExpを参照し、動作の詳細については正規表現を参照してください。

something「特殊文字」(|?、など)が含まれている場合{は、それらを文字通り意味したい場合(/foo?/vs. /foo\?/)、それらをエスケープする必要があります。関連するすべての文字をエスケープする関数は次のとおりです。

function escapeRegEx(string) {
  return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
}

  • を使用していますが、代わりにjQuery.live使用する必要がありますjQuery.on
  • 十分な.search()ときに使用しています.match()
  • 十分なjQuery(this).css({"display":"none"});場合は明示的に使用していますjQuery(this).hide();
  • ループで繰り返していることに注意してjQuery(this)ください-1つで十分です-変数はあなたの友達です。
于 2013-03-11T10:18:13.113 に答える
1

の文字列値から正規表現を作成する場合はtarget_cat、次のようにします。

var mySearchTerm = new RegExp(target_cat);

...

if(jQuery(this).attr('data-cats').search(mySearchTerm)  == -1){
于 2013-03-11T10:06:29.460 に答える
1

RegExpオブジェクトを作成し、それをsearchメソッドに渡す必要があります

if(jQuery(this).attr('data-cats').search(new RegExp(target_cat)) == -1 )){
...
}
于 2013-03-11T10:08:50.863 に答える