首先,我加载一些脚本。然后,一旦加载,我将这些脚本绑定到相关对象。当我在那里有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()});
}
答案 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()")
也可以避免点击提醒。