2011-09-15 61 views
0

我打擊HTML,我想寫一個函數,可以通過其子記錄和記錄索引獲取錨標記的id。它應該看起來像這樣:如何通過jQuery中的chidren數據獲取父ID?

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'不能以數字開頭。 「a」(內聯)元素中不應包含「div」(塊)。 –

+0

可能有相同數據的記錄,所以我需要用兩個參數 – 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/

甚至可以做到這一切在同一行:

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

相關問題