2012-03-30 17 views
8

すべての機能を選択するためにjqueryでジェネリック関数を作成します。私は私のウェブページにタブ付きのビューを持っています。動的IDを持つ要素を検索する

私のコンポーネントのIDは:tabId:someDynamicId:rowId:componentId ここでsomeDynamicIdは動的に生成されます。

jqueryでは、idが - tabId:someDynamicIdで始まる要素を見つけたいと思っています.は、componentIdで終わります。そして、tabId、someDynamicId & componentIdは、この要素を見つける必要のある汎用関数への引数として渡されます。

答えて

8

それは簡単です:

$('[id^=tabId][id$=componentId]').each(function(){ 
    var id = $(this).attr('id'); // tabId:someDynamicId:rowId:componentId​ 
    var list = id.split(':');​​ 

    console.log(list[0]); // tabId 
    console.log(list[1]); // someDynamicId 
    console.log(list[2]); // rowId 
    console.log(list[3]); // componentId​ 
}) 

Wildcards in jQuery selectors

しかし、私が推薦していますこの仕事に適切なツールを使用する。 IDは特定の要素を見つけるのに便利ですが、あなたのケースでは1つまたは2つのクラスとデータ属性を使用する方が良いでしょう。たとえば、次のように

<div class="tabs" data-component-id="x" data-tab-id="y"> 

そして、すべての$( 'タブ ')の要素を見つけて、$(this)を使用.dataの(' コンポーネント-ID ')と$(この).dataセクション(' タブ-ID')

$('.tabs').each(function(){ 
    var component_id = $(this).data('component-id'); 
    var tab_id = $(this).data('tab-id'); 
}); 

更新:

機能としてこれを使用する例があります:

function(tabId,componentId) { 
    $('[id^='+tabId+'][id$='+componentId+']').each(function(){ 
     var id = $(this).attr('id'); // tabId:someDynamicId:rowId:componentId​ 
     var list = id.split(':');​​ 

     console.log(list[0]); // tabId 
     console.log(list[1]); // someDynamicId 
     console.log(list[2]); // rowId 
     console.log(list[3]); // componentId​ 
    }) 
} 
+0

+1を見て、それは最高だった! – tusar

+0

ありがとうございました..それは働いた:) :) –

2

正規表現とfilter()でこれを行うことができます。このようなものはうまくいくはずです。この特定の例では、 "1"で始まり、 "2"で終わる番号で始まるIDを探します。チェック例http://jsfiddle.net/5eXm4/

$.fn.regexFindId = function(re){ 
    return this.filter(function(){ 
     var id = this.id; 
     return id.match(re); 
    }); 
}; 

EDIT:あなたはちょうどこのようにそれらを宣言する正規表現で変数を使用することができます。

var re = new RegExp(myVar); 
+0

良いですが、私は変数を使いたいです。私は正規表現のように私の関数をハードコードすることはできません。なぜなら、私の場合、私はidが1つか2つか3つで始まるのか分からないからです。どのようにそれを行うには???返信してください。 –

+0

あなたのIDからパターンを抽出し、そのパターンと照合する必要があります。典型的なコンポーネントIDはどのように見えますか?また、編集 – elclanrs

1
function(tableid, dynamicid, componentid) 
    { 
    a = tableid+dynamicid ;  
    $(" [id^="+a+"][id$="+componentid+"] "). each(function() 
    { 
        // do ur stuff 
    } 
    ); 
    } 
関連する問題