Закладки являются одним из важных элементов интерфейса пользователя. Здесь мы сделаем динамические закладки с использованием 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.