Javascript MooTools核心:未捕获类型错误:未定义不是函数
我有以下代码功能:Javascript MooTools核心:未捕获类型错误:未定义不是函数,javascript,mootools,Javascript,Mootools,我有以下代码功能: window.addEvent('domready', function() { $('myForm').addEvent('submit', function(e) { var content = CKEDITOR.instances['comment'].getData(); $('comment').setProperty('value',content) e.stop(); var log = $
window.addEvent('domready', function() {
$('myForm').addEvent('submit', function(e) {
var content = CKEDITOR.instances['comment'].getData();
$('comment').setProperty('value',content)
e.stop();
var log = $('log_res').empty().addClass('ajax-loading');
this.set('send', {onComplete: function(response) {
log.removeClass('ajax-loading');
log.set('html', response);
}});
this.send();
});
});
我得到:
未捕获类型错误:未定义不是函数
目前正在使用:mootools核心:1.5.1将评论放入答案中 它看起来像是在试图调用
$
的链接结果上的.addEvent()
,该链接结果通常是document.id
的别名。但是,如果Mootools在jQuery之后加载,它将不会定义$
,而且很有可能是在jQuery.fn
原型上调用它
在mootools代码周围使用闭包模式:
(function($){
$('myForm').addEvent('submit', function(e) {
var content = CKEDITOR.instances['comment'].getData();
$('comment').setProperty('value',content)
e.stop();
var log = $('log_res').empty().addClass('ajax-loading');
this.set('send', {onComplete: function(response) {
log.removeClass('ajax-loading');
log.set('html', response);
}});
this.send();
});
}(document.id));
这确保了mootools代码中$
的值正是您所需要的
您还可以查看
jQuery.noConflict()
,以防止jQuery导出到$
并仅坚持jQuery
。哪一行?这里的潜在问题是在选择器上调用可能未返回对象的方法。例如log=$('log\u res').empty()…
-如果它找不到id为log\u res
的dom节点,则在未定义的情况下调用.empty()
。这同样适用于您的CKEDITOR,因为如果.instances['comment']
未定义,那么.getData()
也将被定义。那么-哪一行抛出?此外,如果页面上有jQuery或其他内容,$.fn.addEvent()
可能未定义。没有足够的信息来解决这个问题。请编辑您的问题并添加更多信息。错误会立即在:$('myForm')之后抛出。addEvent('submit',function(e){
如果在运行此代码时发生错误,您可能没有idmyForm
,或者$不是mootools而是jquery。请尝试以下操作:(function($){…domready…}之后的代码(document.id));
这将创建一个闭包,$将是document.id
的实际值,这是mootools使用的。如果在按submit时发生这种情况,则是ckeditor。是的,确实有效谢谢:D