2010-09-07 4 views
1

У меня есть несколько слоев, которые динамически положить в следующиескрыть дубликат DIV в JQuery

<div><p class="locid">2<p></div> 
<div><p class="locid">1<p></div> 
<div><p class="locid">2<p></div> 
<div><p class="locid">3<p></div> 
<div><p class="locid">4<p></div> 

Что мне нужно сделать, чтобы он отображался как скрыть второе вхождение этого слоя следующим

<div><p class="locid">2<p></div> 
<div><p class="locid">1<p></div> 
<div><p class="locid">3<p></div> 
<div><p class="locid">4<p></div> 

Любые идеи?

Благодаря

Джейми

ответ

1
// get a collection of p's matching some value 
$("p.locid").filter(function() { 
    return $(this).text() == '2'; 

// hide the (div) parent of the second match 
}).eq(1).parent().hide(); 

Демо: http://jsfiddle.net/WjgxQ/

+0

Это один работает, только если содержание буквально "2". Я не думаю, что это вопрос. –

+0

Мое понимание идет по строкам: «При определенном значении я хочу скрыть div, который соответствует второму вхождению этого значения». – karim79

+0

То же самое. В этом случае я не понимаю ваш скрипт: P –

0

Попробуйте это:

var arr = new array(); 

$('.locid').each(function(){ 
    if ($.inArray($(this).text(), arr) !== -1){ 
    $(this).closest('div').remove(); 
    } 
    else{ 
    arr[] = $(this).text(); 
    } 
}); 
1

Посмотрите:

http://api.jquery.com/jQuery.unique/

Это именно то, что вы ищете;)

+0

Это не то, что 'jQuery.unique()' делает. Он удаляет только дубликаты, если они являются одним и тем же фактическим элементом. Поэтому, если у вас есть два элемента, которые имеют одинаковый контент, класс и т. Д., Поэтому они кажутся одинаковыми, они фактически считаются двумя уникальными элементами, потому что они не являются одним и тем же элементом. Они выглядят одинаково. Таким образом, 'jQuery.unique()' не удаляет ни один. : o) – user113716

+0

кричит ... вы правы .. в этом случае работать не будет. – sled

1

Интересно. Попробуй это.

var a = new Array(); 
$('p.locid').each(function(){ 
    text = $(this).text(); 
    if($.inArray(text, a)){ 
     $(this).closest('div').hide(); 
    }else{ 
     a.push(text); 
    } 
}); 
0

Это работает:

var a = new Array(); 

$('p').each(function(index) { 
    text = $(this).text(); 
    if($.inArray(text, a)!=-1){ 
     $(this).closest('p').hide(); 
    }else{ 
     a.push(text); 
    } 
}); 

http://jsfiddle.net/WjgxQ/59/

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