Javascript 奇怪的jQuery错误。子项(…).attr(…)。更改不是函数吗?
我明白这可能不是一个好问题,但我已经束手无策(如果问题需要删除,请告诉我) 我在Magento中安装了一个插件(Zetaprints Web打印),该插件的图像上传部分无法工作。我已经联系了他们的支持,但他们不想知道,除非我掏钱 我认为这是由于JavaScript错误引发的,在Firefox和Chrome控制台中,我都会收到错误消息: 铬 未捕获的TypeError:对象没有方法“更改” 火狐 TypeError:$td.children(…).attr(…)。更改不是函数 无论如何,我都不是jQuery或JavaScript方面的专家,但在我看来,这是因为被引用的对象不是jQuery对象,而是其他对象(我不确定)。错误引用的代码如下所示:Javascript 奇怪的jQuery错误。子项(…).attr(…)。更改不是函数吗?,javascript,jquery,magento,Javascript,Jquery,Magento,我明白这可能不是一个好问题,但我已经束手无策(如果问题需要删除,请告诉我) 我在Magento中安装了一个插件(Zetaprints Web打印),该插件的图像上传部分无法工作。我已经联系了他们的支持,但他们不想知道,除非我掏钱 我认为这是由于JavaScript错误引发的,在Firefox和Chrome控制台中,我都会收到错误消息: 铬 未捕获的TypeError:对象没有方法“更改” 火狐 TypeError:$td.children(…).attr(…)。更改不是函数 无论如何,我都不是j
function add_image_to_gallery (guid, url, on_image_load) {
var trs = $('.tabs-wrapper > .user-images > table > tbody > tr');
$(trs).each(function () {
var $tr = $(this);
var $template = $tr.children('.zp-html-template');
var $td = $template
.clone()
.removeClass('zp-html-template')
.insertAfter($template);
// THE CODE BELOW IS THROWING THE ERRORS
$td
.children('.zetaprints-field')
.attr('value', guid)
.change({ zp: zp }, image_field_select_handler);
$td
.children('.image-edit-thumb')
.click(thumbnail_edit_click_handler);
var $thumb = $td.children('.image-edit-thumb');
$thumb
.find('> .buttons-row > .zp-delete-button')
.click(delete_image_click_handle);
var $img = $thumb
.children('img')
.attr('alt', guid)
.attr('src', url);
if (on_image_load)
$img.load(on_image_load);
});
}
(这是代码的一小部分,文件长度超过1400行)
有人能看出上面的代码有什么明显的错误吗?或者有人知道这可能是什么原因吗?jQuery$与magento不完全兼容。我认为这与Prototype.js有关,但我对它的研究从来没有超过“思考”。我只知道做以下事情可以解决你的问题 任何jQuery插件都必须启用jQuery().noConflict() 见:
基本上,您必须检查插件并将“$”替换为“jQuery”(如果guid未定义
将返回字符串而不是jQuery链。因此“字符串”。更改将引发错误
$td
.children('.zetaprints-field')
.attr('value', guid)
.change({ zp: zp }, image_field_select_handler);
我已经在HTML前面包含的一个外部文件中包含了
jQuery().noConflict()
,这不应该解决上述问题吗?还是我仍然需要检查该文件并更改某些内容?您可能已经使用了jQuery().noConflict(),但您仍然必须键入所有美元符号作为单词jQuery。该插件似乎大量使用“美元符号”,尤其是在变量中。如此之多,以至于一开始我以为它是php代码!我只是说检查一下。尝试使用FireBug控制台并键入jQuery().find('theobjectyouthinkshouldbefound')然后看看你是否能找回一个jquery对象,就像你问题中的代码一样。我创建了一个聊天室(Magento)。如果你愿意,我可以帮你。打得好!看起来guid没有定义,我会调查并看看它是从哪里来的,或者你可以将它更改为$td.childrens('.zetaprints字段').attr('value',guid);$td.childrens('.zetaprints field').change({zp:zp},image_field_select_handler);
我总是小心在链中使用attr函数