2011-09-15 16 views
0

私はHTMLを吹き飛ばしました。子レコードとレコードインデックスによってアンカータグのIDを取得できる関数を作成したいと思います。これは次のようになります:jQueryで親IDをchidrenデータで取得する方法は?

getLinkId("100", 0)=300001 
getLinkId("RD", 1)=300001 
getLinkId("PD", 1)=300002 
getLinkId("902", 2)=300002 

私はjQueryが実装するのに役立つかもしれないが、私はそれに精通していないと思う。誰か助けてくれますか?

<ul id="listview_Sample"> 
    <li role="option"> 
    <div class="ui-btn-inner ui-li"> 
    <div class="ui-btn-text"><a href="" class="listviewLines" id="300001"> 
    <div class="lv_lines" id="300001"> 
    <div class="lv_line"> 
    <div class="lv_line_field">100</div> 
    </div> 
    <div class="lv_line"> 
    <div class="lv_line_field">RD</div> 
    </div> 
    <div class="lv_line"> 
    <div class="lv_line_field">501</div> 
    </div> 
    </div> 
    </a></div> 
    </li> 
    <li role="option"> 
    <div class="ui-btn-inner ui-li"> 
    <div class="ui-btn-text"><a href="" class="listviewLines" id="300002"> 
    <div class="lv_lines" id="300002"> 
    <div class="lv_line"> 
    <div class="lv_line_field">200</div> 
    </div> 
    <div class="lv_line"> 
    <div class="lv_line_field">PD</div> 
    </div> 
    <div class="lv_line"> 
    <div class="lv_line_field">902</div> 
    </div> 
    </div> 
    </a></div> 
    <span class="ui-icon ui-icon-arrow-r"></span></div> 
    </li> 

+0

は冗長であるように思わ? –

+0

あなたは同じ 'id'を持つ複数の要素を持っているようですが、HTML 4.xでは' id'は数字で始めることができません。また、 'div'(ブロック)は' a'(インライン)要素内に含まれているべきではありません。 –

+0

同じデータのレコードがある可能性がありますので、2つのパラメータで識別する必要があります – eric2323223

答えて

2

これはうまくいくと思います。

function getLinkId(id, index){ 
    var matchedResult = $('div.lv_line_field:contains("' + id + '")'); 

    if (matchedResult.parent().index() == index) 
     return matchedResult.closest('a.listviewLines').attr('id'); 

    return null; 
} 

http://jsfiddle.net/4KezR/

でも1行でそれをすべて行うことができます:インデックスとテキストを使用して

function getLinkId(id, index){ 
    return $('div.lv_line_field:contains("' + id + '")').filter(function() { 
     return $(this).parent().index() == index; 
    }).closest('a.listviewLines').attr('id'); 
} 
+0

あなたのリンクは素晴らしいです – eric2323223

2

この関数は、特定の場合のために、あなたの願いを満たしています。各行の説明については、コメントを参照してください。

function getLinkId(id, col){ 
    var main = document.getElementById("listview_Sample"); 

    //enumerate through all list items 
    for(var i=0,len=main.getElementsByTagName("li").length; i<len; i++){ 

     //Each list item contains 3 .lv_line_field elements. 
     // Compare the content of the (i*3+col)th element. 
     if(main.getElementByClassName("lv_line_field")[i*3+col].textContent == id){ 

      //match found, return id. 
      return document.getElementsByClassName("listviewLines")[i].id; 
     } 
    } 
} 
+0

あなたのコードRobに感謝します。 – eric2323223

関連する問題