2016-11-08 2 views
0

У меня есть четыре div, которые я хочу переключать по одному с помощью одной кнопки. Я хочу переключать их один за другим, а не случайным образом. Я попробовал что-то вроде ниже.Переключить несколько divs по одному с помощью кнопки 1 с помощью JQuery

$(document).ready(function() { 
 
    $('#toggle').click(function() { 
 
    $('#1').hide(); 
 
    }); 
 
    $('#toggle').click(function() { 
 
    $('#2').hide(); 
 
    }); 
 
    $('#toggle').click(function() { 
 
    $('#3').hide(); 
 
    }); 
 
    $('#toggle').click(function() { 
 
    $('#4').hide(); 
 
    }); 
 
});
.divs { 
 
    border: 1px solid; 
 
    height: 30px; 
 
}
<div id='1' class='divs'></div> 
 
<div id='2' class='divs'></div> 
 
<div id='3' class='divs'></div> 
 
<div id='4' class='divs'></div> 
 

 
<button id='toggle'> 
 
    toggle 
 
</button>

+0

Я хочу скрыть и показать каждый div один за другим – girish

+0

Возможный дубликат [Show/Hide Multiple Divs with JQuery] (http://stackoverflow.com/questions/6967081/show-hide-multiple-divs -with-jquery) –

+0

Нажмите один раз, чтобы переключить одну кнопку? Или нажмите один раз, переключите четыре кнопки один за другим? – coderz

ответ

1

Сохранить состояние на каждый клик.

$(document).ready(function() { 

    var state = 1; 
    $('#toggle').click(function() { 

    if(state==1){ 
     $('#1').hide(); 
     state=2; 
    } 
    else if(state==2){ 
     $('#2').hide(); 
     state=3; 
    } 
    else if(state==3){ 
     $('#3').hide(); 
     state=4; 
    } 
    else if(state==4){ 
     $('#4').hide(); 
     state=1; //back to state 
    } 
    }); 
+0

это сработало для меня с небольшими изменениями .. Большое спасибо :) – girish

0

Используйте класс вместо Id для использования во много раз

var i = 1; 
 
$('#toggle').click(function(){ 
 
    $('.divs').show(); 
 
    $('#' + i).hide(); 
 
    i++; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='1' class='divs'>dsgsdg</div> 
 
<div id='2' class='divs'>64636</div> 
 
<div id='3' class='divs'>46y</div> 
 
<div id='4' class='divs'>4373477</div> 
 

 
<button id='toggle'> 
 
    toggle 
 
</button>

+0

, который скроет все div на один клик. Я хочу скрыть один div один за другим на кнопке, нажав кнопку – girish

+0

@girish - я обновил ответ для проверки вашего контекста и дайте мне знать, есть ли у вас какие-либо номера –

+0

toggle 4 divs один за другим. нажмите кнопку скрыть первый div, снова нажмите кнопку и отобразите первый div. затем нажмите кнопку скрыть второй div, затем нажмите кнопку и отобразите второй div и т. д. – girish

1
$(document).ready(function() { 
    $('#toggle').click(function() { 
    $('.divs:visible:first').hide(); 
    }); 
}); 
0

цикл по каждому элементу и использовать переключатель. Это дает эффект, который вы желаете.

$('button').click(function(){ 
    $('.divs').filter(function(index,item){ 
    $(item).toggle('slow') 
}) 
}) 

Посмотрите на это демо - https://jsfiddle.net/ukw5wcmt/

0
var i = 1; 
    $('#toggle').click(function(){ 
     $('.divs').show(); 
     $('#' + i).hide(); 
     if(i==4) 
     { 
     i=1; 
     }else{ 
     i++; 
     } 
    }); 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    <div id='1' class='divs'>dsgsdg</div> 
    <div id='2' class='divs'>64636</div> 
    <div id='3' class='divs'>46y</div> 
    <div id='4' class='divs'>4373477</div> 

    <button id='toggle'> 
     toggle 
    </button> 

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

1

Попробуйте один

var count = 1; 
$(document).ready(function() { 
    $('#toggle').click(function(){ 
     $('.divs').show(); 
     if(count == 4) 
      count = 1; 
     $('#' + count).hide(); 
     count++; 
    }); 
}); 
1

Прежде всего, сохраняя числовые идентификаторы не хорошо, поэтому, учитывая, что вы измените их после подопечных, я пишу оба ответа с числовыми идентификаторами и без числовых идентификаторов.

С помощью цифровых идентификаторов легко сделать.

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

var state = 1; 
 
$("#toggleButton").click(function(){ 
 
    $("#"+state++).slideToggle(); 
 
    if(state===5){state=1;} 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
 
<div id='1' >1</div> 
 
<div id='2' >2</div> 
 
<div id='3' >3</div> 
 
<div id='4' >4</div> 
 

 
<button id="toggleButton"> 
 
toggle 
 
</button>

Сейчас подходит к не числовым идентификаторам.

var state = 1; 
 
$("#toggleButton").click(function(){ 
 
    $("#div"+state++).slideToggle(); 
 
    if(state===5){state=1;} 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
 
<div id='div1' >1</div> 
 
<div id='div2' >2</div> 
 
<div id='div3' >3</div> 
 
<div id='div4' >4</div> 
 

 
<button id="toggleButton"> 
 
toggle 
 
</button>

FYI: На мой взгляд, вы не должны использовать числовые идентификаторы.


Дальнейшая справка ко всему.

Если вы не знаете, сколько ДИВ бы там, но у Вас есть четкое правило вырезать, что DIV-х следовать последовательности ли не они имеют числовые/не числовые идентификаторы, то вы можете изменения код слегка включить этот так же, как это.

var state = 1;//first button id to be toggled 
 
var total = 4;//this will be the total number of divs to be handled by the button 
 
$("#toggleButton").click(function(){ 
 
    $("#"+state++).slideToggle(); 
 
    if(state===(total+1)){state=1;} 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
 

 
<div id='1' >1</div> 
 
<div id='2' >2</div> 
 
<div id='3' >3</div> 
 
<div id='4' >4</div> 
 

 
<button id="toggleButton"> 
 
toggle 
 
</button>

Днем кодирования.

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