#jquery
#jquery
Вопрос:
У меня есть кнопка / ссылка. Я хочу открыть несколько разделов несколькими щелчками по одной кнопке.
<a href="#">Link</a>
<div id="one">one</div>
<div id="Two">Two</div>
<div id="Three">Three</div>
<div id="Four">Four</div>
Любая помощь? Спасибо-
Пользователь имел в виду «открыть несколько разделов несколькими щелчками по одной кнопке» (цитата из комментария):
«Я имел в виду, что когда я нажимаю в первый раз на ссылку, появится первый раздел «один», когда я нажимаю на 2-й раз, появится 2-й раздел «Два», и он перезапишет первый раздел .. и так будет продолжаться».
Комментарии:
1. что вы имеете в виду с
open
?2. скажем, divs скрыты в начальном состоянии..
Ответ №1:
<a href="#" id="clickMe" divToShow="div1">Link</a>
<div id="1">one</div>
<div id="2">Two</div>
<div id="3">Three</div>
<div id="4">Four</div>
<script type="text/javascript">
var counter=1;
$("#clickMe").live("click",function (e) {
e.preventDefault();
$("#" (counter ))).show();
});
</script>
Комментарии:
1. Просто для информации — идентификатор не может начинаться с номера — вам нужно добавить к нему префикс.
2. кстати, спецификации HTML 5 позволяют использовать число в качестве идентификатора
Ответ №2:
Вы можете изменить имена ваших div-тегов на что-то вроде div_1
, div_2
etc и выполнить итерацию через них в функции javascript. Это может быть дополнительной возможностью обратиться к ним за тем, что вы имеете в виду open
.
Ваш JavaScript может выглядеть примерно так:
<script type="text/javascript">
var temp = 1;
function openDiv() {
var elem = document.getElementById('div_' temp);
if (elem != -1) {
elem.doWhatEverYouMeanByOpen();
temp = temp 1;
}
}
</script>
В вашем HTML вы можете вызвать эту функцию при нажатии на ссылку, например:
<a href="#" onlick="openDiv();">Link</a>
Ответ №3:
попробуйте: http://jsfiddle.net/m9EKS/
<a href="#" id="clickMe">Link</a>
<div class="test">one</div>
<div class="test">Two</div>
<div class="test">Three</div>
<div class="test">Four</div>
<script type="text/javascript">
$(document).ready(function () {
$("#clickMe").click(function (e) {
e.preventDefault();
$(".test:hidden").first().show();
});
});
</script>
<style type="text/css">
.test { display : none; }
</style>
Ответ №4:
Один из способов сделать это — использовать Javascript (Jquery не требуется).
Установите все divs изначально скрытыми.
<div id="one" class="showHide">one</div>
<div id="Two" class="showHide">Two</div>
<div id="Three" class="showHide">Three</div>
<div id="Four" class="showHide">Four</div>
div.showHide{visiblity:hidden}
Ваша ссылка вызовет функцию JS
<a href="#" onclick="showHide()">Link</a>
<script type="text/javascript">
var clickCount=1;
function showHide()
{
elementName = 'div' clickCount;
var switchTo = 'hidden';
if (document.getElementById(elementName ).style.visibility == 'hidden')
switchTo = 'visible';
document.getElementById(elementName ).style.visibility = switchTo ;
clickCount ;
}
</script>
Комментарии:
1. о, только что понял, что вы хотите показывать разделы по одному при нескольких нажатиях на одну и ту же кнопку. Мой код не для этого.
2. вопрос помечен как jquery и почему это лучшее решение? как вы можете быть уверены, что все браузеры поддерживают style.visibility
3. я не использую и не подразумеваю слово «лучше»
Ответ №5:
Если вам нужно переключаться между разделами, вы можете использовать этот пример:
<style type="text/css">
.show { display : block; }
.hide { display : none; }
</style>
<script type="text/javascript">
$(document).ready(function () {
$("#clickMe").click(function (e) {
e.preventDefault();
var visibleElement = $("#splash .show");
visibleElement.removeClass("show").addClass("hide");
if (visibleElement.next().length > 0) {
visibleElement.next().removeClass("hide").addClass("show");
}
else {
$("#splash div:first").removeClass("hide").addClass("show");
}
});
});
</script>
<a href="#" id="clickMe">Link</a>
<div id="splash">
<div class="show">one</div>
<div class="hide">Two</div>
<div class="hide">Three</div>
<div class="hide">Four</div>
</div>