Можно ли скриптом подставлять код типа?
Привет всем. Нужна помощь. Есть следующая разметка:
<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, время: 08:54. |