区分具有相同类,id和父类的表行

时间:2014-08-08 13:18:16

标签: javascript jquery html jquery-selectors

  

背景

     

我正在使用Microsoft Sharepoint Designer 2010编辑可能性的teamplace .NET网站上开发客户端。但是,由于安全预防措施,我无法访问任何代码隐藏。因此我无法直接将数据从服务器传递到客户端。因此,我必须使用标准的webparts将存储的数据存储到当前页面,然后获取并将值设置为我自己实现的html代码。然后我会隐藏webparts。

     

这就是为什么我只能通过使用javascript来实现我的目标。


我无法更改或添加任何属性到此呈现的代码中的任何元素。以下是我重新创建的基础架构(使用开发人员工具),类似于实际呈现的HTML代码(它具有很多的附加属性):

<div id="WebPartWPQ7">
    <table>
        <tbody>
            <tr>
                <td>
                    <table>
                        <tbody>
                            <tr class="ms-viewheadertr ms-vhltr"></tr>

                            <tr class="ms-itmhover">
                                <td class="ms-vb-itmcbx ms-vb-firstCell"></td>
                                <td class="ms-vb2 ms-vb-lastCell">
                                    <a href="http://www.google.com">Example link</a>
                                </td>
                            </tr>

                            <tr class="ms-alternating ms-itmhover">
                                <td class="ms-vb-itmcbx ms-vb-firstCell"></td>
                                <td class="ms-vb2 ms-vb-lastCell">
                                    <a href="http://www.google.com">Example link 2</a>
                                </td>
                            </tr>

                            <tr class="ms-itmhover">
                                <td class="ms-vb-itmcbx ms-vb-firstCell"></td>
                                <td class="ms-vb2 ms-vb-lastCell">
                                    <a href="http://www.google.com">Example link 3</a>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </td>
            </tr>
        </tbody>
    </table>
</div>


这是我自己的代码,我想为第二列表行的每个值附加链接。

<ul id="frLinks">
        <li class="lTitle">
            <strong>Related Links</strong>
        </li>

</ul>


我想从每个表行的第二个表格单元格中包含的每个a标记中获取href和文本内容。 这是我的尝试:

var rowCount = $('#WebPartWPQ7 table tbody tr td table tbody tr').length;

for (i = 0; i < rowCount-1; i++) { //not appending to title row
    var relatedLinkText = $("#WebPartWPQ7 table tbody tr td table tbody .ms-itmhover .ms-vb-lastCell a").html();
    var relatedLink = $("#WebPartWPQ7 table tbody tr td table tbody .ms-itmhover .ms-vb-lastCell a").attr("href");
    $("#frLinks").append( '<a href="' + relatedLink + '"><li>' + relatedLinkText + '</li></a>');
}


我的问题是,当我从表中获取这些链接时,如何区分这些链接。在这种情况下,可以理解的是总是采用第一个并附加到列表中。我的目标是获取每一个并将其添加到我的列表中,但是如何?

为了更清晰,请参阅此jsFiddle

我知道我的后代选择者的效率低下和缺乏灵活性,如果你愿意分享一个更好的整体选择,我会很高兴。

2 个答案:

答案 0 :(得分:1)

你可以试试这个

$('#WebPartWPQ7 table tbody tr td table tbody tr').each(function(){
  var $a = $(this).find("td:eq(1) a").clone();
  $("#frLinks").append($("<li/>").append($a));
})

Demo

答案 1 :(得分:0)

$('tr.ms-itmhover').each(function(){
link = $(this).find('td.ms-vb-lastCell').html();
$("#frLinks").append('<li>'+link+'</li>');
})

这将获取所有链接并附加到您的代码中。 我在这里更新了你的JSFiddle示例JSFiddleUpdate