Javascript 无法从事件中访问函数
我是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
$(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();