5

2 つの順序付けられていないリストがあり、それぞれが DYNAMIC クラス名を持つリスト項目で満たされています。私が「動的」と言うとき、それらは私によって生成されたものではなく、リストが作成されると変更されないことを意味します。これらのクラス名は API から取得した ID であるため、単なる乱数です。簡単な例は次のようになります...

<ul class="listA">
  <li class="123"></li>
  <li class="456"></li>
  <li class="789"></li>
</ul>

<ul class="listB">
  <li class="789"></li>
  <li class="101"></li>
  <li class="112"></li>
</ul>

私がやろうとしているのは、2 つのリストを比較し、一致するものを強調表示することです。この場合、クラス「789」のアイテムが一致します。ハイライトとは、おそらく背景色など (まだそれほど重要ではない) のように、一致が見つかった後に何らかの css を適用することを意味します。問題は、リストがやや長くなる可能性があり (おそらく 50 項目)、クラスが選択しない乱数であるため、特定の検索を行うことができないという事実にあります。また、複数の一致があるか、まったく一致しない場合がほとんどです。

私は jQuery にかなり慣れていないので、かなり単純な答えがあるかもしれませんが、オンラインで見つけたものはすべて、.find() メソッドなどの特定のクラスによる検索を参照しています。誰かがより多くの情報やより良い例を必要とする場合は、喜んでより多くの情報を提供します。今は単純にしようとしています。

よろしくお願いします!

4

5 に答える 5

0

http://jsfiddle.net/habo/kupd3/のデモ

   highlightDups();

   function highlightDups(){
    var classes = [] ;
    $('ul[class^="list"]').each(function(k,v){
        //alert(v.innerHTML);
        $($(this).children()).each(function(nK,nV){
           // alert($(this).attr("class"));
            classes.push($(this).attr("class"));
        });
    });
        hasDuplicate(classes);
    }

// javascript配列に重複エントリが存在するかどうかを検出する最速の方法から選択された重複を見つけますか?

function hasDuplicate(arr) {
    var i = arr.length, j, val;
    while (i--) {
        val = arr[i];
        j = i;
        while (j--) {
            if (arr[j] === val) {
 // you can write your code here to handle when you find a match
                $("."+val).text("This is Duplicate").addClass("match");
            }
        }
    }
}
于 2013-05-08T03:19:34.187 に答える