Вкладки пользовательского интерфейса Jquery: показ событий, запущенных до добавления - PullRequest
0 голосов
/ 10 ноября 2011

Я использую пример Jquery Ui для управления вкладками, как на этой странице. http://jqueryui.com/demos/tabs/#manipulation. Если при создании первой вкладки не создается вкладка, а в событии добавления создается переменная, а затем выводится предупреждение (var_created)в событии show не работает сообщение о том, что переменная не определена, со второй, другой и т. д. нет проблем.

Я создал скрипт на jsfiddle для его показа:

теперь он должен напечатать предупреждение, но оно не работает, и если вы попытаетесь, вы увидите ошибку с помощью jslint, который скажет, что переменная не определена http://jsfiddle.net/paglia_s/5GU8M/1/

Есть способ избежатьэто?

Ответы [ 3 ]

0 голосов
/ 10 ноября 2011

Я не знаю jsFiddle. Сохраняются ли мои изменения автоматически?

Вы должны определить переменную в верхней области видимости. В противном случае эта переменная не определена снаружи.

Я сделал следующее:

var var1 = "";

$(function() {
var $tab_title_input = $("#tab_title"),
    $tab_content_input = $("#tab_content");
var tab_counter = 0;

// 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>");
        var1 = "try";

    },

    show: function(event, ui) {

        alert(var1);

    }
});
0 голосов
/ 13 ноября 2011

На самом деле есть пара проблем, которые вам необходимо понять: область видимости переменной и порядок выполнения.

область действия переменной : переменные, объявленные с помощью var, являются локальной областью действия (ближе всегофункция).Переменные, объявленные без var, являются глобальной областью действия.

Порядок выполнения : Когда вкладка добавляется в элемент управления Tabs jQuery без какой-либо существующей вкладки, событие tabsshow выполняется до tabsaddсобытие.Таким образом, var1 не будет определен при добавлении первой вкладки, следовательно, переменная undefined error.

Вы можете просто проверить, определена ли var1 перед ее использованием:

if (typeof(var1) !== 'undefined') alert(var1);

Или измените код.

См. Пример: http://jsfiddle.net/william/6fH4v/1/.

0 голосов
/ 10 ноября 2011

удалить var

var var1 = "try"; должно быть var1 = "try";

Я исправил это по вашей ссылке http://jsfiddle.net/5GU8M/4/

Для ясности, вот объяснение:

если вы используете 'var myvar = 1', переменная будет активна только ВНУТРИ функции, в которой она используется.

если вы только объявите 'myvar = 1', переменная будет глобальной и будет работать вне вашей функции jquery, и вы сможете вызывать ее из любого места в скрипте.

...