2012-05-05 5 views
-2

У меня есть следующий контейнер:Показать 2 от 2 элементов на клик

<div id="container"> 
     <div id="1">1</div> 
     <div id="2">2</div> 
     <div id="3" style="display:none">3</div> 
     <div id="4" style="display:none">4</div> 
     <div id="5" style="display:none">5</div> 
     <div id="6" style="display:none">6</div> 
    </div> 

    <div id="more_results">Show 2 more results</div> 

Как: когда я нажимаю на шоу более ДИВ, чтобы отобразить следующий 2 скрытые DIV (3 и 4). И потом, если они щелкают снова показать DIV (5 и 6)

DEMO jsFiddle.

+0

Что вы проверили? Вы пытались использовать onClick и показывать/скрывать? –

+1

«Сделай это» - это не вопрос. Подсказка: вопросы обычно имеют вопросительные знаки. – Ryan

+1

Извините, не хотел звучать так ... Я просто понятия не имел, какой метод использовать для достижения следующего. Извините, английский не мой первый язык. Я буду уверен, что это больше не звучит – Yannick

ответ

3
$('#more_results').click(function(){ 
    $('#container div:visible:last').nextAll('div').slice(0,2).show(); 
});​ 
0
$('#more_results').on('click',function (e) { 
    if (e.preventDefault) 
     e.preventDefault(); 
    else 
     e.stop(); 

    var num = 0; 
    $("#container").children().each(function() { 
     if ($(this).is(':hidden')) { 
     if (num <= 2) { 
      $(this).show(); 
      num++; 
     } 
    } 
}); 
0

Во-первых, вам не нужно все это ID, использовать один CLASS вместо этого!

DEMO JSFIDDLE

var visible = 2;  // setup here initial number of visible elements 

$('.element').slice(visible).hide(); // DOM READY // apply setup 

$('#more_results').click(function(){ 
    $('.element').slice(0,visible+=2).show(); // (for the first click: get Index 0 - to 4 (excluding 4)) and so on... we increase by 2 
}); 
1
$('#more_results').click(function(){ 

    var LoopTimes = 0; 
    $('#container').children().each(function() { 

     if ($(this).is(':visible') === false) { 

       $(this).show(); 
       LoopTimes = LoopTimes + 1; 
     } 

     if (LoopTimes === 2) { return false; } 

    }); 
});​ 

Ремарк: а Moins qu'il фай Absolument utiliser ип identifiant налить TES диву, IL vaut Mieux п RIEN Mettre его Tout OU Mettre дез классы. Avec des classes, au lieu de faire $ ('# 2') ... tu peux ecrire $ ('. MaClasse'). Eq (2) ... Ca permet de faire du code plus propre, plus pro. Sinon, qu'est-ce que tu fais si sur ta page, tu as listy?

http://jsfiddle.net/wpbBJ/2/

+0

Большое спасибо ... очень ценю всех ... отлично работает. – Yannick

+0

Merci beaucoup pour la remarque – Yannick

+0

Autre remarque: l'autre reponse tient en une ligne, chouette. Le probleme avec ce type de lignes c'est que quand tu y reviens 6 mois plus tard pour faire des modifs, il te faudra plus de temps pour recomprendre ce que ca fait. Et si en plus de faire un show tu veux aussi changer de class de style, changer le texte ou autres? Avec la boucle que je t'ai montre, pas de probleme, t'ajoutes une ligne $ (this). et tu fais tes modifs. Faut aussi penser a la maintenace du code pour plus tard. Левые решения могут быть неудобны. – frenchie

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