我正在尝试将使用jQuery的svg edit - editor集成到Magento中。问题是Magento使用Prototype,因此我使用的是jQuery.noConflict();
方法。一切都很好,直到我通过函数调用编辑器然后Firebug抛出以下错误:
$ .extend不是函数
if(config) {
$.extend(curConfig, config);
}
$。isArray不是函数
} else if($.isArray(key)) {
错误发生在59的第121行和svgcanvas.js处。我希望有更多使用jquery和prototype的经验可以帮助我解决这个问题。
答案 0 :(得分:5)
尝试将您的函数attr放入
(function( $ ){
})( jQuery );
所以它看起来像
(function( $ ){
jQuery.fn.attr = function(key, value) {
var len = this.length;
if(!len) return this;
for(var i=0; i<len; i++) {
var elem = this[i];
// set/get SVG attribute
if(elem.namespaceURI === svgns) {
// Setting attribute
if(value !== undefined) {
elem.setAttribute(key, value);
} else if($.isArray(key)) {
// Getting attributes from array
var j = key.length, obj = {};
while(j--) {
var aname = key[j];
var attr = elem.getAttribute(aname);
// This returns a number when appropriate
if(attr || attr === "0") {
attr = isNaN(attr)?attr:attr-0;
}
obj[aname] = attr;
}
return obj;
} else if(typeof key === "object") {
// Setting attributes form object
for(var v in key) {
elem.setAttribute(v, key[v]);
}
// Getting attribute
} else {
var attr = elem.getAttribute(key);
if(attr || attr === "0") {
attr = isNaN(attr)?attr:attr-0;
}
return attr;
}
} else {
return proxied.apply(this, arguments);
}
}
return this;
};
})( jQuery );
答案 1 :(得分:4)
试
var k = jQuery.noConflict();
然后您的通话使用 k 而不是 $ 。
答案 2 :(得分:4)
尝试:jQuery.extend(curConfig, config);
答案 3 :(得分:1)
您是否使用noConflict更改了jQuery名称空间。你似乎仍在使用$来调用func。使用noConflict方法将Jquery命名空间更改为$$或者jQ,然后调用jQ.extend而不是$ .extend等方法。