在事件上向标签UI添加自己的内容

时间:2012-04-03 09:45:08

标签: javascript jquery jquery-ui

我将自己的内容添加到新打开的标签时遇到了一些问题。

            add: function( event, ui ) {
            _CURRENT_TAB = $(ui.tab).attr('href');
            var tab_content = "TEST";
            $( ui.panel ).append( "<p>" + tab_content + "</p>" );
            $tabs.tabs('select', '#' + ui.panel.id);

但是我在点击功能上回调:

function tb(tab_title){
            return '#\\#tabs'+tab_title;
        };

$("#buuton").click(function(){
                $.post("open.php", { read: file },
                    function(data){
                        var read = data.read;
                        alert(read);
                        tab_content = read;
                    }, "json");

            $tabs.tabs( "add", "#tabs-" + tab_counter, "Lorem" );
            tab_counter++;
            $(tb(tab_title)).append(tab_content);
}

我正在使用这个:http://jqueryui.com/demos/tabs/#manipulation。 AJAX工作 - 它给了我一个我想要的价值。我做错了什么?我该怎么办?

1 个答案:

答案 0 :(得分:0)

问题在于了解异步事务的工作原理。当你调用$ .post时,javascript会在.post完成之前继续执行。这是异步事务的本质。所以你基本上在你的.post函数设置tab_content的值之前调用你的tb函数。你的逻辑应该是这样的,以便在.post处理函数中调用tb()函数:

$.post("open.php", { read: file }, function(data){
    var read = data.read;
    alert(read);
    tab_content = read;
    $tabs.tabs( "add", "#tabs-" + tab_counter, "Lorem" );
    tab_counter++;
    $(tb()).append(tb(tab_title));
}, "json");