JQuery - 根据<a> Tags</a>内的文本执行匹配

时间:2012-03-12 14:26:30

标签: javascript jquery html

我看过了; Jquery Extract URL from Textjquery 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”具有与下拉列表中相同的链接。如果我可以访问锚内的文本,那么我可以对表中的文本进行匹配

1 个答案:

答案 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'))
         );
});