使用jquery 1.7.1
这是我正在尝试运行的简单功能:
$('#large-boxes').dblclick(function(e){
var element = $(e.target);
boxes.disappear(element);
});
boxes = {
disappear: function(element){
console.log(element);
element.animate({
height: 0,
width: 0,
top: 0,
left: 0
}, 100);
},
}
在运行时在控制台中输出:
boxes.js:60
[
<div id="4" class="ui-draggable"></div>
]
jquery.min.js:4
Uncaught TypeError: Object function () {
var i;
var newObj = (this instanceof Array) ? [] : {};
for (i in this) {
if (i == 'clone') continue;
if (this[i] && typeof this[i] == "object") {
newObj[i] = this[i].clone();
} else newObj[i] = this[i]
} return newObj;
} has no method 'replace'
起初我认为元素对象周围的括号可能表示一个数组,但看起来这只是jquery对象上的符号。
元素动画正常,如果我删除.animate函数并只使用.css设置所有值,我就不会出错。
有什么想法吗?
答案 0 :(得分:1)
您可能需要添加$(element)
。但是很难说你是如何实际调用这个函数的。
答案 1 :(得分:1)
让我做一个狂野的猜测。 即:
Object function () {
var i;
var newObj = (this instanceof Array) ? [] : {};
......
可能是您自己的函数,它已经破坏了Object的命名空间。在你的某个地方 你正在做的源代码:
Object.prototype.myclone = function() { ... }
现在$ .fn.animate(prop,...)会在for循环
中选择它for( p in prop ) { ....
因为prop只是常规的Object:
{ height: 0, width: 0, top: 0, left: 0 }
从那以后,你的'myclone'拥有它自己的生命,你看到的失败可能很久之后。 我能给你的最好答案是'grep newObj。*'你的源文件和你的所有库。 如果这是射击目标,请告诉我们......