,所以我有大約20個標籤(網頁)中,許多子標籤,全部採用下面類似的代碼顯示:減少jQuery UI的標籤代碼
我在想我怎麼能縮小這個代碼在主把JS文件和使用/再使用用於每個股利??,因爲這些標籤被加載。
我打的障礙是,我需要照顧所有這些div的,所以我必須真寫相同的代碼20+次???
//dynamic tab add/remove
var tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close' style=\"float:left;\" role='presentation'>Remove Tab</span></li>",
tabCounter = 1;
//jquery-ui
var divOneTabs = $("#divOneTabs").tabs({ //same as: $(".selector").tabs("option", "active", 1);
active: 0
});
$('.tabs').css('height','auto'); //extend height of tab content... not working as of now...
function divOneAddTab(t,c) {
var label = t,
id = t + "-" + tabCounter,
li = $(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label)),
tabContentHtml = c;
divOneTabs.find(".divOneTabs").append(li);
divOneTabs.append("<div id='" + id + "'><p>" + tabContentHtml + "</p></div>");
//below fixes the tab height issue in jquery-ui
//divOneTabs.append('<div id="' + id + '"' + ' class="tabdiv" ' + '><p>' + tabContentHtml + '</p></div>');
divOneTabs.tabs("refresh");
tabCounter++;
}
// close icon: removing the tab on click
divOneTabs.delegate("span.ui-icon-close", "click", function() {
var panelId = $(this).closest("li").remove().attr("aria-controls");
$("#" + panelId).remove();
divOneTabs.tabs("refresh");
});
divOneTabs.bind("keyup", function(event) {
if (event.altKey && event.keyCode === $.ui.keyCode.BACKSPACE) {
var panelId = divOneTabs.find(".ui-tabs-active").remove().attr("aria-controls");
$("#" + panelId).remove();
divOneTabs.tabs("refresh");
}
});
//end jquer-ui settings
...每個頁面上的一些功能將調用其獨特divOneAddTab常規,這將然後加李其獨特的類別(名稱相同)。
所以,這段代碼repeates爲divOne,divTwo .....
HTML:
<div id="divOneTabs">
<ul class="divOneTabs">
<li><a href="#divOneTabsDef">Default</a><span class="ui-icon ui-icon-close" style="float: left;" role="presentation">Remove Tab</span></li>
</ul>
<div id="divOneTabsDef">
<pre>Sample Output.</pre>
</div>
謝謝FO rthe細節。我還沒有嘗試,但我相信它會起作用。 – rajeev