提前感谢所有输入/帮助/建议......
我正在使用Twitter Bootstrap标签来整理一些信息。选项卡将位于表单页面上,每个选项卡将包含一个“联系表单”,用户可以在提交整个表单之前向该页面添加多个联系人。
<div class="container">
<ul class="nav nav-tabs">
<li class="active"><a href="#contact_01" data-toggle="tab">Joe Smith</a><span>x</span></li>
<li><a href="#contact_02" data-toggle="tab">Molly Lewis</a><span>x</span> </li>
<li><a href="#" class="add-contact" data-toggle="tab">+ Add Contact</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="contact_01">Contact Form: Joe Smith</div>
<div class="tab-pane" id="contact_02">Contact Form: Molly Lewis</div>
</div>
</div>
此处的完整代码:http://jsfiddle.net/Harlow/zQnck/34/
我正在尝试模仿jQuery UI的“简单操作”选项卡示例的功能。 (http://jqueryui.com/tabs/#manipulation)
我目前所拥有的将添加一个新标签,但我希望能够添加一个新的,唯一的标签及其自己的ID(从代码继续,如“contact_01,contact_02等”),点击“+添加新联系人”,它始终是最后一个选项卡,但实际上没有自己的选项卡内容窗格。在动态添加内容的另一边,我希望能够通过单击每个选项卡上的小“x”来删除它。
- 编辑 -
只是为了澄清,jQuery示例在单击“New Tab”时触发了一个模态。出于我的目的,我只想创建一个新选项卡而不输入选项卡名称或内容(内容将始终是相同的联系表单,我很好,选项卡名称与新生成的ID相同 - 我会让它自动更新到联系人的名字。)
答案 0 :(得分:13)
新小提琴:http://jsfiddle.net/dogoku/KdPdZ/2/
$(".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();
});
$('.add-contact').click(function(e) {
e.preventDefault();
var id = $(".nav-tabs").children().length; //think about it ;)
$(this).closest('li').before('<li><a href="#contact_'+id+'">New Tab</a><span>x</span></li>');
$('.tab-content').append('<div class="tab-pane" id="contact_'+id+'">Contact Form: New Contact '+id+'</div>');
});
请注意,我删除了悬停功能,而是使用了css
.nav-tabs > li:hover > span {
display:block;
}
答案 1 :(得分:2)
Dogoku的jsfiddle似乎是404,所以我在这里整理了一个快速解决方案:http://jsfiddle.net/xQ3f5/
我对此进行了更新,以阻止“活动”类应用于“+添加联系人”选项卡元素,因为它与任何选项卡元素都不对应。我还建议将活动选项卡切换到新创建的选项卡。这是javascript:
$(".nav-tabs").on("click", "a", function(e){
e.preventDefault();
if(this.id == "add-contact"){return false;}
$(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();
});
$('#add-contact').click(function(e) {
e.preventDefault();
var id = $(".nav-tabs").children().length; //think about it ;)
$(this).closest('li').before('<li id="contact_tab_'+id+'"><a href="#contact_'+id+'">New Tab</a></li>');
$('.tab-content').append('<div class="tab-pane" id="contact_'+id+'">Contact Form: New Contact '+id+'</div>');
$("#contact_tab_"+id+" a").tab('show');
});