ajax和jquery的就绪状态问题

时间:2010-11-30 04:34:11

标签: javascript jquery ajax

我有以下问题。我正在尝试使用jQuery加载一组标签加载。 当我获得新内容(通过POST)时,tabs()函数中止并且不构建 标签。我正在使用这个功能:

$(document).ready(function() {
    var array_with_alias_id = $.getJSON("/getAliasForMatchAll/", null,
        function (data){
            array = data.aliases_id;
            load(array);
        });
    $("#next_left").click(function(){next_left()});

    //load(array_with_alias_id);
});



function next_left(){
    if(j >= array.length-1){
        var l = j
    } else {
        var l = j+=1;
    }
    $("#alias_id_left").val(list_left[l]);
    $("#merge_alias_id_left").val(list_left[l]);
    $.post("/visor/",{"alias_id":list_left[l],"position":"L"},
            function(data){
                $("#tabsL").html(data).ready(function(){
                    $("#tabsL").tabs();
                });
            });
}

我认为我的问题是ajax问题而且我已经读过这个[0], 但我不能给出解决方案。 函数next_left()只能运行一次。我认为该文件为 这个功能准备好了,但是当我加载标签时它不起作用 (我认为选项卡调用方法中止,因为如果我用firebug看到html 它改变了,但不是全部。)

有任何线索吗?

[0] http://docs.jquery.com/Tutorials:AJAX_and_Events

2 个答案:

答案 0 :(得分:1)

尝试替换 $(“#next_left”)。点击(function(){next_left()});

$("#next_left").live('click', function(){next_left()});

答案 1 :(得分:0)

IRC的人帮助了我。 我现在已经将.POST之后的函数更改为:

function next_left(){
    if(j >= array.length-1) {
        var l = j
    } 

    else {
        var l = j+=1;
    }

    $("#alias_id_left").val(list_left[l]);
    $("#merge_alias_id_left").val(list_left[l]);
    $.post("/visor/",{"alias_id":list_left[l],"position":"L"},

    function(data) {
        $("#tabsL").html(data).tabs("destroy").tabs();                
    });
}

他们正确地告诉我,ready函数适用于文档,并且不能用于我如何使用它。我希望我在这里发布的固定代码可以帮助其他人。