JQuery错误:未捕获的TypeError:对象#<HTMLDocument>没有方法'ready'

zee*_*y23 35 javascript wordpress jquery

我的网站在javascript控制台中收到此标题中的错误.谷歌似乎说这是因为没有加载jquery,但它绝对可见.

<script type="text/javascript">
  $(document).ready(function(){
    $.ajax({
      type: "GET",
      url: "https://www.mjfreeway.com/naturalremedies/mml-connect/45.xml",
      dataType: "xml",
      success: function(xml) {
        $(xml).find("products").each(function() {
          $(this).find("product").each(function() {
            $("#output").append($(this).find("title").text() + "<br />");
          });
        });
      }
    });
  });
</script>
Run Code Online (Sandbox Code Playgroud)

该网站是医用大麻相关的,所以nsfw for some.sorry for the messy head,它处于开发模式. http://www.kindreviews.com/1/mmc/

谢谢,zeem

bra*_*zzi 53

显然你正在使用jQuery和Mootools,它们都$用作核心功能的别名.可能$产生此错误的功能是Mootools功能.我建议你尝试使用jQuery而不是编写你的jQuery代码,$这样你就可以确认我的观点是对的.

祝好运!

  • @ zeemy23:你不必删除MooTools,你只需要让你的代码使用正确的jQuery符号.如果您使用Chrome,请将其设置为["在所有例外情况下中断"模式](http://code.google.com/chrome/devtools/docs/scripts-breakpoints.html#js_exceptions)并跳过第一个(404在你的一个CSS文件上)你会看到`$ .noConflict();`后跟`$(document).ready(...`.在第二行,`$`不再引用jQuery,因为那是什么是'noConflict`,将符号返回到它之前的含义(在这种情况下是MooTools).使用`jQuery(document).ready(...`代替. (2认同)
  • 您应该在所有jQuery代码中替换`$`for jQuery`,而不仅仅是在原始错误行中.我注意到脚本的`$ .ajax`只是`jQuery(document)`行.它应该是`jQuery.ajax`(和`jQuery(xml)`,`jQuery(this)`等等).HTH (2认同)

tbt*_*rpe 8

是的 - 我相信这正是问题所在.jQuery和mooTools争论使用$符号.

你正在使用正确的轨道

try{
   jQuery.noConflict();
 } catch(e){};
Run Code Online (Sandbox Code Playgroud)

但是在使用它之后,为了使用jQuery功能,你必须将其称为jQuery(...)而不是$(...).例:

// Use jQuery via jQuery(...)
 jQuery(document).ready(function(){
   jQuery("div").hide();
 });
Run Code Online (Sandbox Code Playgroud)

以下是jQuery文档的链接:http://docs.jquery.com/Using_jQuery_with_Other_Libraries