2016-07-13 5 views
-2

引用符を持っている場合、変数を持つセレクタを作成:変数の内容は、私はこのjQueryのを作成しました

$(document).ready(function() { 
     $(".responsivetable").on("click", "td", function() { 
      var content = $(this).text(); 
      var index = ($(this).index()); 
      $(".responsivetable tr td:nth-child(" + (index + 1) + "):contains('" + content + "')").addClass('kleur1'); 

     }); 
    }); 

それはあなたがテーブルセル(TD)他のすべてのTDの中をクリックするとされて何同じ内容の同じ列は、特定のクラスを取得します。

名前が「John」の列をクリックすると、その列の「John」を含むすべてのセルがcssclassを取得します。

これは機能しますが、コンテンツに単一引用符が含まれていると、nov '16のようにはなりません。

文字列の連結が解除されるためだと思いますが、どうすれば修正できますか?

(。私が達成しようとしている事を解決するための他の方法があまりにも歓迎されている)

+2

代わりに 'の:( ' "+コンテンツ+"' を含んでいます) 'を使用してください':contains( "+ content +") ' –

+0

downvotesありがとう、申し訳ありませんこれを修正する方法を知らなかった:-S – Michel

+0

私はなぜこれがdownvotedされたか分かりません。それは、問題記述、構文的に有効なコードにおける現在の試み、所望の結果、適切なタグ、適切なタイトルを有する。私は何が欠けているか分からない。 – Tomalak

答えて

2
$(".responsivetable").on("click", "td", function() { 
    var content = $.trim($(this).text()).toLowerCase(), 
     index = $(this).index() + 1, 
     $candidates = $(".responsivetable tr td:nth-child(" + index + ")"); 

    $candidates 
     .removeClass("kleur1") 
     .filter(function() {  
      return $(this).text().toLowerCase().indexOf(content) > -1; 
     }) 
     .addClass('kleur1'); 
}); 

オルタナティブ:

$(".responsivetable").on("click", "td", function() { 
    var content = $.trim($(this).text()).toLowerCase(), 
     index = $(this).index() + 1, 
     $candidates = $(".responsivetable tr td:nth-child(" + index + ")"); 

    $candidates 
     .toggleClass("kleur1", function() { 
      return $(this).text().toLowerCase().indexOf(content) > -1; 
     }); 
}); 
+1

この場合、 ':contains()'が動作しない理由を説明できますか?そして、とにかくこれは違う振る舞いです。ここでは、OPの投稿されたコードとは異なり、大文字と小文字を区別しません。しかし、私はこれが本当に重要ではないと思う。 –

+0

セレクタ文字列が壊れないように、あらゆる種類の入力値を適切にエスケープするすべての方法を考えて自分自身を占有したいという欲望はない。それは時間の無駄です、 '.filter()'はここでもっと適切です。さらに、 ':contains()'は大文字と小文字を区別し、空白を区別します。これを変更する方法はありません。 – Tomalak

+0

問題はありませんが、コードの回答のみを投稿することは本当に助けにはなりません(通常)。しかし実際には、OPは 'filter()'を使う方が良いです。 –

関連する問題