-1

これは動的に作成された著者の HTML リストで、属性が含まれています。

<span class="authors">
    <a href="/url_one">Author One Name</a><span> - <a href="http://wsj.com">Author Attirbute String</a></span>,
    <a href="/url_one">Author Two Name</a><span> - <a href="http://wsj.com">Author Attirbute String</a></span>, and
    <a href="/url_one">Author Three Name</a><span> - <a href="http://wsj.com">Author Attirbute String</a></span>
</span>

それらが同一で連続している場合、 JQueryを使用して連続する各連続を取り除き<span> <a href="http://wsj.com">Author Attirbute String</a></span>、最後のものだけを残すにはどうすればよいですか?

それで、「ウォールストリートジャーナル」という同じ属性を持つ3人の著者がいるとしましょう...私はこれを作ろうとしています:

著者 1 名 - ウォール ストリート ジャーナル、著者 2 名 - ウォール ストリート ジャーナル、および著者 3 名 - ウォール ストリート ジャーナル

これがあります:

著者 1 名、著者 2 名、著者 3 名 - ウォール ストリート ジャーナル

属性が同一で連続している場合にのみ機能し、それ以外の場合は関数を中止します。

その他の考慮事項:

  1. HTML インスタンスごとに 1 ~ 4 人の作成者が存在できます。
  2. これらの著者リストのインスタンスがページにいくつか存在する可能性があり、それらすべてを処理する必要があります。

できれば助けてください!私はこれが複雑であることを知っています...

これは私がやっていることの単純化されていない例です... Drupal サイトであり、重複を削除するために変更したいこの関数を使用して、コードのタイトルタグから JQuery によって属性が生成されます。

$(function() {
  $('span.authors a').each(function() {
    $('a[href^="/authors/"]').attr('title');
    if ($(this).attr('title')) { var attrarray = $(this).attr('title').split('|');
      if (attrarray[1]) { var thespan = '<span> ~ <a href="http://' + attrarray[1] + '">' + attrarray[0] + '</a></span>'; }
      else { var thespan = '<span> ~ ' + attrarray[0] + '</span>'; }
      $(this).after(thespan); }
  });
});

ページの例を次に示します: http://kpbj.com/authors/dee_ann_durbin

4

2 に答える 2

3
// Get spans.
var attributes = $('.authors').children('span');

// Save first value in variable to compare it to other elements.
var content = attributes.first().html();

// Iterate through all children and compare their values to the first one.
$.each(attributes, function(index, item){
       // Abort if not the same.
       if ($(item).html() != content) return;
   });

// All are the same. Remove all except the last one.
$.each(attributes, function(index, item) {
       if (index != attributes.length - 1) $(item).remove();
   });

これがフィドルです

更新:
コメントに基づいて、ここに更新されたfiddleがあります。

于 2013-04-28T15:46:38.593 に答える