JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/sunny/jquery-ui.css">
<div class="demo">
<div id="dialog" title="Tab data">
<form>
<fieldset class="ui-helper-reset">
<label for="tab_title">Title</label>
<input type="text" name="tab_title" id="tab_title" value="" class="ui-widget-content ui-corner-all" />
<label for="tab_content">Content</label>
<textarea name="tab_content" id="tab_content" class="ui-widget-content ui-corner-all"></textarea>
</fieldset>
</form>
</div>
<button id="add_tab">Add Tab</button>
<button id="get_index">Get Selected Index</button>
<button id="remove_selected">Remove Selected Index</button>
<div id="tabs">
<ul>
<li><a href="#tabs-1">Nunc tincidunt</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>
</ul>
<div id="tabs-1">
<p>Proin elit arcu, .</p>
</div>
</div>
</div>
CSS
#dialog label, #dialog input { display:block; }
#dialog label { margin-top: 0.5em; }
#dialog input, #dialog textarea { width: 95%; }
#tabs { margin-top: 1em; }
#tabs li .ui-icon-close { float: left; margin: 0.4em 0.2em 0 0; cursor: pointer; }
#add_tab { cursor: pointer; }
JavaScript
$(function() {
var $tab_title_input = $('#tab_title'), $tab_content_input = $('#tab_content');
var tab_counter = 2;
// tabs init with a custom tab template and an "add" callback filling in the content
var $tabs = $('#tabs').tabs({
tabTemplate: '<li><a href="#{href}">#{label}</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>',
add: function(event, ui) {
var tab_content = $tab_content_input.val() || 'Tab '+tab_counter+' content.';
$(ui.panel).append('<p>'+tab_content+'</p>');
}
});
// modal dialog init: custom buttons and a "close" callback reseting the form inside
var $dialog = $('#dialog').dialog({
autoOpen: false,
modal: true,
buttons: {
'Add': function() {
addTab();
$(this).dialog('close');
},
'Cancel': function() {
$(this).dialog('close');
}
},
open: function() {
$tab_title_input.focus();
},
close: function() {
$form[0].reset();
}
});
// addTab form: calls addTab function on submit and closes the dialog
var $form = $('form',$dialog).submit(function() {
addTab();
$dialog.dialog('close');
return false;
});
// actual addTab function: adds new tab using the title input from the form above
function addTab() {
var tab_title = $tab_title_input.val() || 'Tab '+tab_counter;
$tabs.tabs('add', '#tabs-'+tab_counter, tab_title);
tab_counter++;
}
// addTab button: just opens the dialog
$('#add_tab')
.button()
.click(function() {
$dialog.dialog('open');
});
// close icon: removing the...