如果hrefs相同则链接列表替换文本jQuery

时间:2011-08-15 10:31:54

标签: jquery hyperlink

我有一个链接列表,其中一些可能是重复的href,但链接文本本身已经略有编辑。

在那一刻,为了摆脱我一直在使用此代码的重复项。

var seen = {};
 $('.sortable li div a').each(function() {
  var txt = $(this).text();
  var linkTxt = $(this).attr("href");
   if (seen[linkTxt]){
    $(this).parent().parent().remove();
    var sortableList = $(".sortable").html();
    $("#ItemDescription").val(sortableList);
   }else{
    seen[linkTxt] = true;
    $(".sortable li div").each(function(){
    var selectLength = $(this).find("input").length;
     if(selectLength == 0){
      $("<input type='checkbox' name='selected' class='select'/>").appendTo(this);
     }
 });

这段代码只是将其删除,我需要代码将顶部的linkText替换为更接近底部的linkText(最新版本),然后将其删除,但仅限于href的匹配。

任何想法?

我的列表看起来像这样

<ol class="sortable ui-sortable" style="float:right;"><li class="menu-item">
<div class="">Allure<input type="checkbox" name="selected" class="x_x_x_select"></div>
<ol class="">
    <li style="display: list-item;" class="">
    <div class=""><a href="/portfolios/energy-drink" class="" name="">Energy-Drink</a><input type="checkbox" name="selected" class="x_x_select"></div>
    </li>
</ol>
</li>
<li class="menu-item">
<div class="">Avon<input type="checkbox" name="selected" class="x_x_x_select"></div>
</li>
<li class="menu-item">
<div class="">Bitten SJP<input type="checkbox" name="selected" class="x_x_x_select"></div>
</li>
<li style="display: list-item;" class="">
    <div class=""><a href="/portfolios/energy-drink" class="" name="">Allure-Energy-Drink</a><input type="checkbox" name="selected" class="x_x_select"></div>
    </li>
</ol>

1 个答案:

答案 0 :(得分:0)

如果我理解你,你想从底部拿走这个项目,在顶部搜索一个相应的项目,替换那个文本并从底部删除该元素。

var changed = true;
while(changed) {
    changed = false;
    $('.sortable li div a').each(function() {
        var all = $('.sortable li div a[href=' + $(this).attr('href') + ']');
        if(all.length > 1) {
            all.first().text(all.last().text());
            all.slice(1).remove();
            changed = true;
            return false;
        }
    });
}