Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Можно ли скриптом подставлять код типа? (https://javascript.ru/forum/jquery/60824-mozhno-li-skriptom-podstavlyat-kod-tipa.html)

malsyst 22.01.2016 10:32

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

Siend 22.01.2016 11:13

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" ));

malsyst 22.01.2016 11:54

Siend,Функции изучил. Но подскажите, пожалуйста, как заставить скрипт добавлять эти элементы
<li><a href='#tab-1' data-toggle='tab'>Home</a></li>
, где 1 номер таба, а Номе – содержимое .title-tab

Вот пример - https://jsfiddle.net/c30rbb6c/13/

Siend 22.01.2016 11:56

malsyst,
добавлять куда? я помогу, для этого мне надо понять с чем помогать)

malsyst 22.01.2016 12:05

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/

Siend 22.01.2016 12:30

<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>

malsyst 22.01.2016 13:15

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-->


Помогите уже доделать.

Siend 22.01.2016 13:22

<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>

malsyst 22.01.2016 13:48

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/

Siend 22.01.2016 13:52

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, время: 02:40.