我看过了; Jquery Extract URL from Text和 jquery match() variable interpolation - complex regexes 但我还是有点失落。
问题; 我有一个页面,其顶部包含一个下拉菜单,下拉列表中是一个项目的名称,我可以单击该项目以查看该项目。该项的URL与名称无关,它是唯一的ID。
下拉列表的示例代码;
<div class="innerMenuWrapper">
<li class="hasSubMenu sfhover">
<a href="javascript:void(0);" tabindex="-1" class="menuItemLink">Items</a>
<span class="splIcon splIcon-triangle-4-e dropDown">Submenu</span>
<div class="outerMenuWrapper splShadow" style="left: 160px; display: none; ">
<ul>
<div class="innerMenuWrapper">
<li class="">
<a href="/en-US/app/Items/itemahdwhidwbow" tabindex="-1"
class="menuItemLink">item.one</a>
</li>
<li class="">
<a href="/en-US/app/Items/itemfhfaogsgs" tabindex="-1"
class="menuItemLink">item.two</a>
</li></div></ul></div></li></div>
这全部由外部生成并由实际的Web服务本身管理。页面本身是从数据集生成的表。我已经生成了没有问题的数据,并且演示也很好。 我想要做的是从上面的HREF中提取URL并将相同的项目包装在主页面上的表格中。
E.g。我有一个包含3列的项目,项目,项目内容,项目价格等。我想用上面的相关URL包装每个项目。
因此,以item.one为例,这是它在下拉列表中的名称,并具有URL /en-US/app/Items/itemahdwhidwbow
。在数据本身内部,我有这个代码来选择表的每个第一个单元格并用链接包装内容(一个更大的代码集的一部分);
if (tr.find("td:nth-child(1)")) {
tr.find("td:nth-child(1)").wrapInner(function() {
var link = $('<a/>');
link.attr('href', 'US/app/Items/itemahdwhidwbow');
link.text($(this));
return link;
});
}
显然目前网址是静态的。我真正需要的是一种从同一页面下拉列表中的相关链接中提取URL的方法。第一个表格单元格中的名称将始终与下拉列表中的名称匹配,是否有一种简单的方法可以执行此操作? 到目前为止我所阅读的内容指向正则表达式使用,但在这种情况下,我正在寻找代码的一部分内容以匹配页面下方的内容。
编辑:
例如,item.one的文本为“item.one”。 “item.one”也在表中,我希望表中的“item.one”具有与下拉列表中相同的链接。如果我可以访问锚内的文本,那么我可以对表中的文本进行匹配
答案 0 :(得分:1)
我不清楚你的表格布局结构,但我可以给你一个大致的想法:
$('a.menuItemLink').each(function(index, linkEl){ //Iterate over dropdown links
var $link=$(linkEl);
tr.find("td:nth-child("+ index +")") //Lets say here we get required cell by index
.wrapInner(
$('<a/>').attr('href', $link.attr('href'))
);
});