背景
我正在使用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。
我知道我的后代选择者的效率低下和缺乏灵活性,如果你愿意分享一个更好的整体选择,我会很高兴。
答案 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));
})
答案 1 :(得分:0)
$('tr.ms-itmhover').each(function(){
link = $(this).find('td.ms-vb-lastCell').html();
$("#frLinks").append('<li>'+link+'</li>');
})
这将获取所有链接并附加到您的代码中。 我在这里更新了你的JSFiddle示例JSFiddleUpdate