加载脚本后的回调在以警报开头时起作用,而在我删除警报时则不起作用

时间:2011-02-17 02:36:53

标签: javascript jquery

首先,我加载一些脚本。然后,一旦加载,我将这些脚本绑定到相关对象。当我在那里有alert()语句时,一切都很好,并且当我没有时,它会失败(即jEditable不绑定)。

// Load two scripts, execute editor_callback when both are loaded
$(document).ready(function() {

  var scripts = 0;

  var update_scripts = function() {
    scripts++;
    if (scripts == 2)  {
      editor_callback();
    }
  };

  // Load jEditable
  $.getScript('js/jquery.jeditable.min.js', update_scripts());

  // Load Elastic textareas (if needed)
  if (!jQuery().elastic) {
    $.getScript('js/jquery.elastic.js', update_scripts());
  }
  else {
    update_scripts();
  }

});

function editor_callback() {

  //alert ("In editor_callback()");

  $('.edit_area').editable('editable/update', { 
      type      : 'textarea',
      cancel    : 'Cancel',
      submit    : 'OK',
      indicator : 'Saving...',
      tooltip   : 'Click to edit...'
  });

  $('textarea').live("click", function() {$(this).elastic()});
}

2 个答案:

答案 0 :(得分:3)

因为你正在执行该功能而不是等待脚本加载。

()之后删除update_scripts,以便指向update_scripts功能,而不是立即执行

您的代码应如下所示

$.getScript('js/jquery.jeditable.min.js', update_scripts);

至于为什么在代码中添加alert有效:alert暂停了当前的代码执行,因此下一行(.editable)正在等待警报框关闭,那个时候脚本已经加载了。

答案 1 :(得分:0)

如果你正在使用支持它的javascript调试器(例如firebug或chrome),你可以使用控制台记录:

console.log("In editor_callback()")

也可以避免点击提醒。