2011-08-15 5 views
0

私はリンクのリストを持っていますが、その中にはhrefが重複しているかもしれませんが、リンクテキスト自体はわずかに編集されています。hrefsが同じである場合のリンクのリストjQueryのテキストを置き換えます

分で、私はこのコードを使用している重複を取り除くために。

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); 
    } 
}); 

このコードは、それを削除して、私はだけのhrefの試合であれば、それを削除し、(最新はここに行く)下近いlinkTextでトップにlinkTextを交換するためのコードが必要になります。

誰でもいいですね。

私のリストは、この

<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

リンクテキストを削除する場合は、最初に変更する必要がありますか? – marc

+0

メニューはネストされたリストです。私は下の項目をチェックしたいのですが(新しいものですが配置されていない)、既に同じHREFの項目がある場合は、下から削除したいのですが、入れ子になっているアイテムのAテキストを新しいAテキストに置き換え、最後に追加しただけです。それが終わったら、アイテムを下から削除したいのですが、それは意味をなさないかもしれません。申し訳ありません –

答えて

0

私はcorrewctlyあなたを理解している場合、あなたは、下からアイテムを取るトップに応じてアイテムを探し、その1のテキストを置き換えるとから要素を削除するようになります。ボトム。

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; 
     } 
    }); 
} 
+0

これは私が探しているものですが、なんらかの理由で、動作していない、これは別の機能の中にありますか?あなたの助けをありがとう! –

関連する問題