2011-12-13 18 views
0

私はいくつかの単純な基準(文字列の有無にかかわらず)に基づいて特定の行を表示/非表示にする必要があるテキスト領域を持っています。ユーザーがチェックボックスをオンにして、これらの行を表示または非表示にしておきたい。JQueryを使用して特定のテキストを含むテキスト領域内のすべての行を表示/非表示にする方法はありますか?

基本的には、チェックボックスにクリックハンドラを添付し、クリックするとテキスト領域の値を取得してからフィルタリングを適用する必要があります。チェックボックスをオフにすると、元の結果が再び表示されます。

$('#filter_button').click(function() { 

     var unfilteredArray = $('#unfilteredtextarea').val().trim().split('\n'); 

     for (var i = 0; i < unfilteredArray.length; i++) { 

    if (VALUE IS PRESENT){ 
    HIDE LINE; 
    } else { 
    DISPLAY LINE; 
    } 
     } 

    }); 

私はJavaScriptでFORループを使用して、各ラインで読み込み、それぞれを確認することができます知っているが、テキストエリアは、4000の+の行が含まれている場合、それは高価なことができます。

これを簡略化するためにJQueryを使用する方法はありますか、これについては別の考え方が必要ですか?どんな助けもありがとうございます。

ありがとうございました。

+0

どんなにクライアントとサーバの対話の作品を修正することとは対照的に、フィルタ(テキストエリアに直接適用されている場合の構文は、どのようなものか)基本的なプロセスは、各行がその値のために検査される必要があるということです。 'for'ループは、少なくとも' .each() 'イテレータよりもはるかに安価です。質問:文字列がすでにDOMに送られたら、 ''/n''で分割できますか?私はあなたがデータセットでできることを知っていますが、文字がノード内に残っているかどうかはわかりません。 –

+0

これは読み取り専用のテキストエリアですか?そうでない場合、ユーザーがテキストを変更するとどうなりますか? – gilly3

答えて

0

テキストエリアのscrollTopプロパティを使用して、十字を反復している行を制限することを検討しましたか?

は、少なくともあなたが検索オペアンプの費用をバインドすることができます。この

関連する問題