Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从事件中访问函数_Javascript_Jquery_Jquery Ui - Fatal编程技术网

Javascript 无法从事件中访问函数

Javascript 无法从事件中访问函数,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我是javascript新手,我不理解这个问题: $(function() { var $tab_title_input = $( "#tab_title"), $tab_content_input = $( "#tab_content" ); var tab_counter = 0; var editors = {}; var tab_current = 0; // tabs init with a custom tab template an

我是javascript新手,我不理解这个问题:

$(function() {
    var $tab_title_input = $( "#tab_title"),
    $tab_content_input = $( "#tab_content" );
    var tab_counter = 0;
    var editors = {};
    var tab_current = 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("<div id=\"editor" + tab_counter + "\" class=\"editor\">" + tab_content + "</div>");
            adjust_size();
            tab_current = ui.index;
            editors[tab_current] = ace.edit("editor" + tab_counter);
            },
        show: function( event, ui ) {
            adjust_size();
            tab_current = ui.index; // zero-based index
            editors[tab_current].resize();
        },
        select: function( event, ui ) {
            adjust_size();
            tab_current = ui.index; // zero-based index
            },

    });
中断所有告诉
未捕获类型错误:无法调用未定义的方法“resize”


但是编辑器
editors[tab\u current].resize()
在add事件中定义良好,并且
alert(tab\u current)
给了我正确的结果。

我打赌
编辑器[tab\u current]
返回
未定义的


您的
警报(当前选项卡)
可能会返回正确的值,但这并不意味着存在与之对应的
编辑器的元素。使用
警报(编辑器[tab_current])
对其进行测试,如果显示
未定义
,则检查元素设置是否正确。

我可以立即看到两种调查途径:

  • ace.edit(“编辑器”+选项卡计数器)
    返回什么?它总是使用resize方法返回对象,还是有时返回未定义的对象

  • 对于当前
    选项卡的任何值
    是否总是在
    show
    之前调用
    add


  • 是的,它是这样或类似的:第一次它说undefined,但后来[object-object],它似乎设置正确(它工作),显然在你第一次调用它的时候它设置不正确。在运行时跟踪您的代码以找出原因。哦,这是第一次,我的意思是,只有在创建第一个选项卡时,其他选项卡才能正常工作。在安装了Firebug扩展的Firefox中对其进行测试。您可以跟踪每一行并设置断点。我发现了问题:问题只在于第一个选项卡,我不知道为什么它返回[object]它总是有一个调整大小的方法,但为了安全起见,我尝试了其他方法,所有方法都在添加事件中工作,但不是在sow或select2-)我想是的,但是当创建第一个选项卡时,它会说“其他对象未定义”
    editors[tab_current].resize();