Закладки являются одним из важных элементов интерфейса пользователя. Здесь мы сделаем динамические закладки с использованием jQuery. В библиотеке JQuery UI имеется функционал для организации закладок, но возможностей для динамического добавления/удаления нет.
Здесь используются закладки на основе тега
li. Методика очень проста, когда создается закладка, для нее генерируется
id с помощью переменной счетчика, а также создается элемент содержания, который также соответствует счетчику.
HTML
Разметка представляет собой контейнер, в котором имеется единственный элемент
li, содержащий кнопку добавления закладки.
2 |
<li id="litab" class="ntabs add"><a href="" id="addtab">+</a></li> |
4 |
<div id="tabcontent"></div> |
jQuery
Если мы говорим о динамическом элементе, то его нужно создавать на лету. В данном случае речь идет о новой закладке и новом элементе содержания. В функции
addtab привязывается обработчик к событию “click”, чтобы обеспечить работу элементов, созданных на лету.
04 |
// Инициализируем первую закладку |
08 |
$("#addtab, #litab").click(function() { |
10 |
$("#tabcontent p").hide(); |
15 |
function addtab(count) { |
16 |
var closetab = '<a href="" id="close'+count+'">×</a>'; |
17 |
$("#tabul").append('<li id="t'+count+'">Закладка №'+count+' '+closetab+'</li>'); |
18 |
$("#tabcontent").append('<p id="c'+count+'">Содержание закладки № '+count+'</p>'); |
20 |
$("#tabul li").removeClass("ctab"); |
21 |
$("#t"+count).addClass("ctab"); |
23 |
$("#t"+count).bind("click", function() { |
24 |
$("#tabul li").removeClass("ctab"); |
25 |
$("#t"+count).addClass("ctab"); |
26 |
$("#tabcontent p").hide(); |
27 |
$("#c"+count).fadeIn('slow'); |
30 |
$("#close"+count).bind("click", function() { |
31 |
// Активируем предыдущую закладку |
32 |
$("#tabul li").removeClass("ctab"); |
33 |
$("#tabcontent p").hide(); |
34 |
$(this).parent().prev().addClass("ctab"); |
35 |
$("#c"+count).prev().fadeIn('slow'); |
37 |
$(this).parent().remove(); |
38 |
$("#c"+count).remove(); |
CSS
08 |
-webkit-border-radius: .3em .3em 0 0; |
09 |
-moz-border-radius: .3em .3em 0 0; |
10 |
border-radius: .3em .3em 0 0; |
19 |
border: 1px solid #BDC7D5; |
20 |
padding: 5px 3px 5px 8px; |
27 |
text-decoration: none; |
39 |
border-bottom-width: 0; |
42 |
text-decoration: none; |
47 |
-webkit-border-radius: .2em; |
48 |
-moz-border-radius: .2em; |
56 |
border: 1px solid #BDC7D5; |
Готово! Вы можете поместить закладку в элемент
div и показывать ее как скрытое содержание. Тег
ul расширяется динамически, поэтому количество добавляемых закладок не ограничено. Можно добавить кнопки навигации по закладкам и задействовать свойство CSS
left.