jquery
  • css-selectors
  • 2009-09-14 3 views 11 likes 
    11

    私は要素識別子の配列を持っています、いくつかのサーバー側の検証から戻ってきます。 IDの先頭に「#」は付いていません。配列を通って各メンバに#を前置するのではなく、すべての要素をIDで直接選択するjqueryの手段はありますか?あなたが彼らにID_1のようなものに名前を付けて、あなたはあなたができる文字列としてIDを持っている場合は、このIDの配列 - JavaScript/JQueryで選択する方法?

    $("[id^='id_]") // returns multiple 
    
    +0

    あなたはjQueryの答えを望み、JSを選択しました:( –

    +0

    @Elzo、満足のいくjqソリューションがありませんでした。 –

    +1

    @Elzo、彼のソリューションはJSとjQueryの素晴らしい組み合わせでした。 – davidethell

    答えて

    12

    昔ながらのgetElementByIdを忘れてはいけませんか?idsのハッシングは必要ありません。それからちょうどjQueryオブジェクトを取得するためのjQueryにノードを養う:

    var ids = ['jq-primarySearch', 'jq-n-CSS']; 
    var nodes = $.map(ids, function(i) { return document.getElementById(i) }); 
    var jqObj = $(nodes); 
    
    +1

    JavaScriptは実際には分かりません。$ .map(ids、document.getElementById ) '本当にうまくいきません! –

    3

    このようなjQueryで選択してください

    $("#"+id); //gives you one element 
    

    類似したIDが複数ある場合は、Elzoのsugges 。

    0

    を行うことができID_2場合は、この

    $("[id=id_value]"); // returns 1 id 
    

    のようにIDによって選択することができますjQueryのでは

    21

    あなたはちょうどこのように、それらを結合することができます:

    var ids = ['div1', 'div2', 'div3']; 
    
    $('#' + ids.join(',#')).click(function() { alert('hi'); }); 
    
    +3

    今話しています – Andreas

    +1

    今、私たちはガスで料理しています! –

    4

    (NB - 私はこれを試していない - これが私の頭の上からです)

    のは、あなたの配列が「編曲であるとしましょう"

    文字列識別子の配列をjQueryオブジェクトの配列にマップして、通常のjQueryセレクタを使用してそれらをすべて連結できませんでしたか?

    $($.map(arr, function(id) { return $('#' + id); })) 
    
    1

    ちょうどノードの選択を行い、自分にはその結果をラップ:

    $(document.getElementById(id)) 
    

    はjQueryのだけ戻って解析する必要があること、文字列セレクタを構築するセーブそしてまったく同じことをしてください。さらに、 ':'や '。'のようなエスケープ文字については心配する必要はありませんが、IDでは有効ですがセレクタでは他のものを意味します。

     関連する問題

    • 関連する問題はありません^_^