从另一个javascript动态添加jquery选项卡

时间:2011-03-12 12:24:04

标签: jquery jquery-ui jquery-selectors

我正在使用jQuery创建标签。我把javascript代码放在一个单独的文件中。 tabset变量用于引用选项卡。 Javascript具有以下内容:

$(document).ready(function() {
//add a tabset
var tabset = $("#tabset").tabs({
    /*add close button*/
    tabTemplate: "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>",
    /*cache tabs*/
    cache: true,
    /*immediately select a just added tab*/
    add: function(event, ui) {
        //alert(ui.panel.id);
        tabset.tabs('select', '#' + ui.panel.id);
    }
});

我可以使用下面的语句添加另一个标签。如果我从这个javascript调用此语句,这可以正常工作。

tabset.tabs('add', url, nameToCheck);

我想在另一个javascript文件中添加一个名为#tabset的tabset的新选项卡,我无法使用tabset变量,因为它超出了范围。

我尝试使用jquery选择器来查找tabset并调用add函数,但是没有添加选项卡。请查看以下声明:

$('#tabset').tabs('add', 'url', 'newTab');

我的问题是:如何从任何javascript文件向现有的tabset添加另一个标签?如何选择现有的tabset并调用add函数?

祝你好运, Javanus

1 个答案:

答案 0 :(得分:1)

尝试这样做:

$(document).ready(function() {
   $("#tabset").tabs({
    tabTemplate: yourtabtemplate,
    cache: true,
    add: function(event, ui) {
        // Change 'tabset' to 'this'
        this.tabs('select', '#' + ui.panel.id);
    }
});

在另一个JS文件中:

var tabset = $('#tabset');
tabset.tabs('add', url, nameToCheck);

或者简单地说:

$('#tabset').tabs('add', 'url', 'newTab');

编辑:问题是您可能在第二个文件之前添加了第一个文件。因此,$('#tabset')没有来自JQueryUI的标签功能,$('#tabset').tabs('add')无效。

切换顺序如下:

file1.js:

$(document).ready(function() {
   $("#tabset").tabs({
    tabTemplate: yourtabtemplate,
    cache: true,
    add: function(event, ui) {
        // Change 'tabset' to 'this'
        this.tabs('select', '#' + ui.panel.id);
    }
});

file2.js:

$('#tabset').tabs('add', 'url', 'newTab');

您索引视图:

<script src="scripts/file1.js"></script>
<script src="scripts/file2.js"></script>

检查文件顺序。快乐的编码!