Javascript 在Drupal7上完成DOM之前加载JQuery脚本

Javascript 在Drupal7上完成DOM之前加载JQuery脚本,javascript,jquery,html,drupal,drupal-7,Javascript,Jquery,Html,Drupal,Drupal 7,我相信这就是我面临的问题。我一直在JQuery在DOM中查找的类或ID上遇到“UncaughtTypeError:undefined不是函数”错误。我试图让Add2Any菜单的顶部div/标题关闭菜单。我确信我的单击功能还有其他问题,但我相信我的问题在于我需要的ID(#a2apage_默认值)中,目标尚未加载。我已经尝试在模块的信息文件中调用脚本,并通过主题的信息文件调用脚本,但没有成功。我得到了第一个警报,然后在开发工具中查看,我在#a2apage_DEFAULT上看到了未捕获的TypeErr

我相信这就是我面临的问题。我一直在JQuery在DOM中查找的类或ID上遇到“UncaughtTypeError:undefined不是函数”错误。我试图让Add2Any菜单的顶部div/标题关闭菜单。我确信我的单击功能还有其他问题,但我相信我的问题在于我需要的ID(#a2apage_默认值)中,目标尚未加载。我已经尝试在模块的信息文件中调用脚本,并通过主题的信息文件调用脚本,但没有成功。我得到了第一个警报,然后在开发工具中查看,我在#a2apage_DEFAULT上看到了未捕获的TypeError。如有任何建议,将不胜感激

jQuery(window).load(function () {
    Drupal.behaviors.cee = {
        attach: function(context, settings){
            console.log("attach");
            $('#a2apage_DEFAULT').click(function() {
                console.log("click");
                $(this).parent('#a2apage_dropdown').css('display','none');
            })
        }
    };
} (jQuery));

您应该等待文档加载,而不是窗口加载

jQuery(document).load(function () {
    Drupal.behaviors.cee = {
        attach: function(context, settings){
            console.log("attach");
            $('#a2apage_DEFAULT').click(function() {
                console.log("click");
                $(this).parent('#a2apage_dropdown').css('display','none');
            })
        }
    };
} (jQuery));

猜测一下,该错误可能与您使用
$
有关,但没有为该变量分配任何内容

这应该起作用:

(function($) {
  Drupal.behaviors.cee = {
    attach: function(context, settings){
      console.log("attach");
        $('#a2apage_DEFAULT').click(function() {
          console.log("click");
          $(this).parent('#a2apage_dropdown').css('display','none');
        })
      }
    };
})(jQuery);

由于我的声誉,我无法添加图片,这里有一个外部链接,指向我的开发工具上的错误。这就是我的代码现在的样子。结尾语法正确吗?在ID.jQuery(document).load(function(){Drupal.behaviors.cee={attach:function(context,settings){console.log(“attach”);$('#a2apage_DEFAULT')。单击(function(){console.log(“click”);$(this.parent('#a2apage_dropdown')。css('display','none');}};};}(jQuery));您还需要确保在使用此函数之前加载drupal核心文件,您可以在附加事件之前尝试
console.log(drupal);
以确保drupal对象存在于正常的jQuery中,这是正确的…在drupal中,没有那么多。
drupal.behaviors.cee.attach()
仅在DOM就绪时调用anyway@Clive必须正确,你的“附加”被触发,所以它必须是$,请尝试用JQueryTanks交换$以获得你的帮助,这就是问题所在。感谢你的帮助,我正在学习JQuery和JS。这解决了我的问题,我能够完成我试图完成的任务。