我很欣赏这可能不是一个很好的问题,但我会在我的智慧结束(如果问题需要删除,请告诉我)
我在Magento(Zetaprints Web To Print)中安装了一个插件,此插件的图片上传部分不起作用。我已经联系了他们的支持,但他们不想知道它,除非我咳钱。
我认为这是由于JavaScript错误被抛出,在Firefox和Chrome控制台中我收到错误消息:
铬
未捕获TypeError:对象没有方法'更改'
火狐
TypeError:$ td.children(...)。attr(...)。change不是函数
我不是jQuery或JavaScript的专家,但在我看来,这是因为被引用的对象不是jQuery对象,而是其他东西(我不太确定)。错误引用的代码如下:
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行)
上面的代码可以看到任何明显错误吗?或者有人知道可能导致这种情况的原因吗?
答案 0 :(得分:2)
如果guid未定义$td.attr('value')
将返回字符串而不是jquery链。所以'string'.change会引发错误。
$td
.children('.zetaprints-field')
.attr('value', guid)
.change({ zp: zp }, image_field_select_handler);
答案 1 :(得分:1)
jQuery $与magento不完全兼容。我认为它与Prototype.js有关,但我从来没有考虑过“思考”。我只知道执行以下操作可以解决您的问题...
任何jQuery插件都必须启用jQuery()。noConflict()。
请参阅:http://api.jquery.com/jQuery.noConflict/
基本上你必须通过你的插件并在任何地方替换“$(”with“jQuery(”