2014-01-27 2 views
-2

Я хранение толстой кишки, разделенное значение в атрибутах данных HTML элементовсравнение двух значений, работающих в каждой петле JQuery

<a class='te' data-tes='test123;123test;234test'>test</a> 
<a class='te' data-tes='t3;1st;123test'>test1</a> 

Я хотел бы функцию, которая возвращает общие ценности. В приведенном выше примере только 123test будет соответствовать. До сих пор это то, что я попытался

$('.te').each(function(){ 
    if($(this).data('tes')!= undefined){ 
     # Here how can i perform the comparision. 
    } 
}) 
+3

В чем вопрос/проблема? – ElliotM

+0

Какое сравнение? –

+2

worksforme http://jsfiddle.net/gSKqb/ –

ответ

0

Вы можете сделать это сначала создать массив, который хранит каждый из данных-атрибутов, разделить на ;

var arr = []; 
$('.te').each(function() { 
    arr.push($(this).data('tes').split(';')); 
}); 

Это будет в вашем примере создания массив как это:

[ 
    ["test123", "123test", "234test"], 
    ["t3", "1st", "123test"] 
] 

После этого, вам придется запустить цикл через каждый из этих значений для их сравнения:

for (var i=0;i<arr[0].length;i++) { 
    if (arr[0][i] == arr[1][i]) { 
     //This will only run when the first element's data-tes attribute's value is equal to the second element's. In this case, that'll be for the third value - at i==2. 
    } 
} 
+0

Я сделал небольшие изменения в приведенном выше примере для цикла [скрипка] (http://jsfiddle.net/3mRTL/) – kndwsu

+0

@EditmeHere проблема в этом JSFiddle заключается в том, что ваш селектор не закрывает свою строку правильно. [this] (http://jsfiddle.net/3mRTL/1/) должен работать. – Joeytje50

+0

Извините check [this] (http://jsfiddle.net/3mRTL/2/) – kndwsu

0

насчет

var results = {}; 

$(".te").each(function() { 

    var parts = $(this).data('tes').split(";"); 

    // in case the same string is present twice in 
    // same element and nowhere else 
    var added = {}; 

    for(var i = 0; i < parts.length; i++) { 

     // this string is not in results yet 
     if(results[ parts[i] ] == undefined) { 
      results[ parts[i] ] = 1; 
      added[ parts[i] ] = 1; 
     } // it is in results & if not already present in this string then add 
     else if(!added[ parts[i] ]) { 
      results[ parts[i] ]++; 
      // record that string is found in this element 
      added[ parts[i] ] = 1; 
     } 
    } 

}); 

Для примера это приводит к

{"test123":1,"123test":2,"234test":1,"t3":1,"1st":1} 

Те предметы, стоимость которых 2 или более те, которые происходят, по крайней мере, 2-х элементов. Если ваше требование состоит в том, что оно существует во всех элементах, тогда значение должно соответствовать количеству элементов.

Fiddle here

Смежные вопросы