Я только начал изучать разработку интерфейса & действительно нужна помощь с практическим проектом.Bootstrap - динамически добавленные вложенные вкладки
Я пытаюсь создать двухслойные вложенные вкладки, где пользователь может добавлять вкладки на внешний слой. Каждая внешняя вкладка будет иметь внутренние вкладки, где пользователь может также добавить дополнительные внутренние вкладки. На каждой вкладке будет такой же контент, поэтому я использую iframe для этого - если у вас есть лучшее предложение, я бы очень хотел его услышать.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не знаю, как привязать внутренние вкладки к внешним вкладкам. Каждая из внешних вкладок должна иметь разное количество вкладок в зависимости от того, сколько внутренних вкладок создается пользователем. Кажется, я не могу это сделать & все мои внешние вкладки в настоящее время имеют те же внутренние вкладки.
Любая помощь/ввод будет очень оценен! Благодарю.
Вот мой фрагмент кода:
<div class="container">
<!-- top level tabs -->
<ul class="nav nav-tabs" id="topNav">
<li class="active"><a href="#top1" data-toggle="tab">Home</a><span>x</span></li>
<li><a href="#" class="addTop" data-toggle="tab">+ Add Tab</a></li>
</ul>
<div class="tabbable">
<!--bottomNav -->
<ul class="nav nav-tabs" id="bottomNav">
<li class="active"><a href="#bottom1" data-toggle="tab">Test</a><span>x</span></li>
<li><a href="#" class="addBottom" data-toggle="tab">+ Add Tab</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="bottom1"><br><iframe src="form.html" width="100%" height="60%" allowtransparency="true" frameBorder="0"></iframe></div>
</div>
</div>
</div>
Мой сценарий:
$(document).ready(function() {
$(".nav-tabs").on("click", "a", function(e){
e.preventDefault();
$(this).tab('show');
})
.on("click", "span", function() {
var anchor = $(this).siblings('a');
$(anchor.attr('href')).remove();
$(this).parent().remove();
$(".nav-tabs li").children('a').first().click();
});
/* Adding New Tabs */
$('.addTop').click(function(e) {
e.preventDefault();
var id = $("#topNav").children().length;
$(this).closest('li').before('<li><a href="#top'+id+'">#'+ id + '</a><span>x</span></li>');
// $('.tab-content').append('<div class="tab-pane" id="top'+id+'">'+ '<br><iframe src="form.html" width="100%" height="60%" allowtransparency="true" frameBorder="0">' + '</iframe>' + '</div>');
});
$('.addBottom').click(function(e) {
e.preventDefault();
var id = $("#bottomNav").children().length;
$(this).closest('li').before('<li><a href="#bottom'+id+'">#'+ id + '</a><span>x</span></li>');
$('.tab-content').append('<div class="tab-pane" id="bottom'+id+'">'+ '<br><iframe src="form.html" width="100%" height="60%" allowtransparency="true" frameBorder="0">' + '</iframe>' + '</div>');
});
});
Огромное спасибо за рабочий образец кода! Я немного изменил код, чтобы лучше подойти к тому, что я пытаюсь выполнить, но теперь я застрял в попытке удалить субтитры родительских вкладок> = 2. Ниже приведена jfiddle. Не могли бы вы посоветовать, что я делаю не так или нет? Спасибо огромное! http://jsfiddle.net/w4yzhh2t/ – kasrus
Проблема в первой строке: $ ("ul.nav-tabs"). On ("click", "a", function (e) {.. .} Это проблема делегирования события, указанная в пункте 2. Поскольку все вновь созданные подписи с тегом «ul», событие не может быть запущено. Вы должны присоединить прослушиватель событий к их родительскому тегу, который не будет динамически изменен/добавлено. В этом примере, например, div.tabbable можно использовать – SerMintt