Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 奇怪的jQuery错误。子项(…).attr(…)。更改不是函数吗?_Javascript_Jquery_Magento - Fatal编程技术网

Javascript 奇怪的jQuery错误。子项(…).attr(…)。更改不是函数吗?

Javascript 奇怪的jQuery错误。子项(…).attr(…)。更改不是函数吗?,javascript,jquery,magento,Javascript,Jquery,Magento,我明白这可能不是一个好问题,但我已经束手无策(如果问题需要删除,请告诉我) 我在Magento中安装了一个插件(Zetaprints Web打印),该插件的图像上传部分无法工作。我已经联系了他们的支持,但他们不想知道,除非我掏钱 我认为这是由于JavaScript错误引发的,在Firefox和Chrome控制台中,我都会收到错误消息: 铬 未捕获的TypeError:对象没有方法“更改” 火狐 TypeError:$td.children(…).attr(…)。更改不是函数 无论如何,我都不是j

我明白这可能不是一个好问题,但我已经束手无策(如果问题需要删除,请告诉我)

我在Magento中安装了一个插件(Zetaprints Web打印),该插件的图像上传部分无法工作。我已经联系了他们的支持,但他们不想知道,除非我掏钱

我认为这是由于JavaScript错误引发的,在Firefox和Chrome控制台中,我都会收到错误消息:

未捕获的TypeError:对象没有方法“更改”

火狐

TypeError:$td.children(…).attr(…)。更改不是函数

无论如何,我都不是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行)


有人能看出上面的代码有什么明显的错误吗?或者有人知道这可能是什么原因吗?

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函数