Можно ли скриптом подставлять код типа?
Привет всем. Нужна помощь. Есть следующая разметка:
<ul class="nav nav-tabs"> <li class="active"><a href="#home" data-toggle="tab">Home</a></li> <li><a href="#profile" data-toggle="tab">Profile</a></li> </ul> <div class="tab-content"> <div class="tab-pane fade in active" id="tab-1"> <h2> Home </h2> <p>Raw denim you probably haven't...</p> </div> <div class="tab-pane fade" id="tab-2"> <h2> Profile </h2> <p>Food truck fixie locavore, accus...</p> </div> ... </div> Этот код присутствует на сервере: <div class="tab-content"> <div class="tab-pane fade in active" id="tab-1"> <h2> Home </h2> <p>Raw denim you probably haven't...</p> </div> <div class="tab-pane fade" id="tab-2"> <h2> Profile </h2> <p>Food truck fixie locavore, accus...</p> </div> ... </div> И добавляется аналогичным образом по мере необходимости в блок tab-content разметка: <div class="tab-pane fade" id="tab-3"> <h2> News </h2> <p>Food truck fixie locavore, accus...</p> </div> Можно ли скриптом подставлять код перед блоком tab-content типа?: <ul class="nav nav-tabs"> <li class="active"><a href="#tab-1" data-toggle="tab">Home</a></li> <li><a href="#tab-2" data-toggle="tab">Profile</a></li> … </ul> :help: |
malsyst,
http://api.jquery.com/append/ append appendTo prepend prepandTo тебе в помощь. разница в месте подстановки и возвращаемом объекте. как пример: $( "<ul class='nav nav-tabs'><li class='active'><a href='#tab-1' data-toggle='tab'>Home</a></li><li><a href='#tab-2' data-toggle='tab'>Profile</a></li>…</ul>" ).prependTo( $( ".tab-content" )); |
Siend,Функции изучил. Но подскажите, пожалуйста, как заставить скрипт добавлять эти элементы
<li><a href='#tab-1' data-toggle='tab'>Home</a></li>, где 1 номер таба, а Номе – содержимое .title-tab Вот пример - https://jsfiddle.net/c30rbb6c/13/ |
malsyst,
добавлять куда? я помогу, для этого мне надо понять с чем помогать) |
Siend,
Нужно создать вначале следующую разметку: <ul class='nav nav-tabs'> </ul> Перед . tab-content Затем в эту разметку Добавлять элементы li с ссылкой на id табов и названием из .title-tab <li><a href='#tab-2' data-toggle='tab'>Profile</a></li> Вот пример - https://jsfiddle.net/c30rbb6c/13/ |
<html> <head> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <div id="parrent"> <div class="tab-content"> <div class="tab-pane fade in active" id="tab-1"> <h2 class="title-tab"> TEST-1</h2> <p>SomeText SomeText SomeText SomeText</p> </div> <div class="tab-content"> <div class="tab-pane fade in active" id="tab-2"> <h2 class="title-tab"> TEST-2</h2> <p>SomeText SomeText SomeText SomeText</p> </div> </div> <script> var l = $(".tab-content").length-1 for (var i=l; i>=0; i--){ $("<ul class='nav nav-tabs'><li><a href='#"+$($(".tab-content")[i]).find(".tab-pane").attr("id")+"' data-toggle='tab'>"+$($(".tab-content")[i]).find(".title-tab").html()+"</a></li></ul>").prependTo($("#parrent")) } </script> </body> </html> |
Siend,
Спасибо, но нужна немного другая структура: <div id="parrent"> <div class="tab-content"> <div class="tab-pane fade in active" id="tab-1"> <h2 class="title-tab"> TEST-1</h2> <p>SomeText SomeText SomeText SomeText</p> </div><!--/.tab-pan--> <div class="tab-pane fade" id="tab-2"> <h2 class="title-tab"> TEST-2</h2> <p>SomeText SomeText SomeText SomeText</p> </div><!--/.tab-pan--> </div><!--/.tab-content--> </div><!--#parrent--> Помогите уже доделать. |
<html> <head> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <div id="parrent"> <div class="tab-content"> <div class="tab-pane fade in active" id="tab-1"> <h2 class="title-tab"> TEST-1</h2> <p>SomeText SomeText SomeText SomeText</p> </div> <div class="tab-pane fade in active" id="tab-2"> <h2 class="title-tab"> TEST-2</h2> <p>SomeText SomeText SomeText SomeText</p> </div> </div> </div> <script> var l = $(".tab-pane").length-1 for (var i=l; i>=0; i--){ $("<ul class='nav nav-tabs'><li><a href='#"+$($(".tab-pane")[i]).attr("id")+"' data-toggle='tab'>"+$($(".tab-pane")[i]).find(".title-tab").html()+"</a></li></ul>").prependTo($("#parrent")) } </script> </body> </html> |
Siend, Проблема в том, что создается несколько ul, а должен быть один. Я уже по аналогии попытался доделать, но пришлось вынести пустой блок
<ul class="nav nav-tabs"></ul> <html> <head> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <div id="parrent"> <ul class="nav nav-tabs"> </ul> <div class="tab-content"> <div class="tab-pane fade in active" id="tab-1"> <h2 class="title-tab"> TEST-1</h2> <p>SomeText SomeText SomeText SomeText</p> </div> <div class="tab-pane fade in active" id="tab-2"> <h2 class="title-tab"> TEST-2</h2> <p>SomeText SomeText SomeText SomeText</p> </div> </div> </div> <script> var l = $(".tab-pane").length-1 for (var i=l; i>=0; i--){ $("<li><a href='#"+$($(".tab-pane")[i]).attr("id")+"' data-toggle='tab'>"+$($(".tab-pane")[i]).find(".title-tab").html()+"</a></li>").prependTo($(".nav-tabs")) } </script> </body> </html> Скажете, а можно его тоже вначале создать как-нибудь? Вот пример - https://jsfiddle.net/c30rbb6c/18/ |
malsyst,
не понял? я спецом сделал тебе чтобы создавалась столько блоков, сколько у тебя табов. если тебе нужно чтобы создавался допустим один по клику, то держи: <html> <head> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <div id="parrent"> <div class="tab-content"> <div class="tab-pane fade in active" id="tab-1"> <h2 class="title-tab"> TEST-1</h2> <p>SomeText SomeText SomeText SomeText</p> </div> <div class="tab-pane fade in active" id="tab-2"> <h2 class="title-tab"> TEST-2</h2> <p>SomeText SomeText SomeText SomeText</p> </div> </div> </div> <script> $(".tab-pane").css({"background-color":"blue"}) $(".tab-pane").click(function(e){ $("#addedItem").remove(); $("<ul class='nav nav-tabs' id='addedItem'><li><a href='#"+$(this).attr("id")+"' data-toggle='tab'>"+$(this).find(".title-tab").html()+"</a></li></ul>").prependTo($("#parrent")) }) </script> </body> </html> кликай по синим панелькам. |
Часовой пояс GMT +3, время: 23:03. |