某些Javascript可以在单个页面上工作,但在通过Drupal主题全局加载时不能工作;s javascript
在SO聊天中,有人建议我在这里问以下问题: 我想通过Drupal主题的Javascript在我的整个网站上全局加载一些Javascript;不必在每篇文章中反复插入Javascript代码 例如,我使用以下代码来管理它(想象一下,当在本地插入时,它被包装在某些Javascript可以在单个页面上工作,但在通过Drupal主题全局加载时不能工作;s javascript,javascript,jquery,drupal-7,global,Javascript,Jquery,Drupal 7,Global,在SO聊天中,有人建议我在这里问以下问题: 我想通过Drupal主题的Javascript在我的整个网站上全局加载一些Javascript;不必在每篇文章中反复插入Javascript代码 例如,我使用以下代码来管理它(想象一下,当在本地插入时,它被包装在..中): (无论是在每页插入时,还是在全局加载到Drupal主题的javascript时,都可以在本地正常工作): 然而,对于另外两个Javascript片段,当全局加载它们时,我无法使它们正常工作。但是,如果将它们本地插入到每一篇连续文章中
..
中):
(无论是在每页插入时,还是在全局加载到Drupal主题的javascript时,都可以在本地正常工作):
然而,对于另外两个Javascript片段,当全局加载它们时,我无法使它们正常工作。但是,如果将它们本地插入到每一篇连续文章中,它们的效果会非常好(我将只提及一个较小的代码,以供参考):
(想象一下,在本地插入时,它再次被包装在
…
中):
仅供参考:如果您对我如何添加.感兴趣,解决方案只是将每个“脚本”放在一个单独的
.js
-文件中。如果将它们放在一个.js
-文件中,它们就会完全失去功能
任何人都知道这是一种特定于Drupal的策略,或者这是Javascript的通用策略,也是“业内人士”都知道的策略吗?这个问题与Drupal无关,只是一个Javascript问题。我认为(但没有测试)发生这种情况是因为您定义了两次匿名函数
(函数($){…})(jQuery)
。在所有语言中,两个函数名可能永远不会相同。如果您想确定,详细信息应该在浏览器的JavaScript控制台中可见
除此之外,将两个脚本合并为一个脚本更为整洁,因为它们都是在加载文档时启动的。如果您需要更清楚地了解脚本的哪一部分执行特定功能,那么将其拆分为多个文件(正如您已经发现的那样)也是可行的。提示:啊哈:目前我一次只能使用1个Javascript代码。。。我可以选择加载第一个脚本,也可以加载第二个脚本。Hou应该能够通过组合document.ready函数的内容来组合这两个脚本。你只需要一次,行为应该保持不变。我也不知道第3行的美元符号是什么意思。据我所知,这并没有什么特别的作用。@Neograph734-抓得好。将它们封装在
$(document).ready(function(){
当然可以作为答案提交,因为这似乎也解决了问题。=)
(function ($) {
$(document).ready(function () {
$
$(".toggler").click(function () {
$(this).next().slideToggle("slow");
}).next().hide();
$("a[href^=#]").click(function () {
var id = $(this).attr('href');
$(id).parents('.toggled').fadeIn("fast");
});
});
})(jQuery)
(function($) {
$(document).ready(function() {
function getKey(element) {
return element.href;
}
function sameGroupAs(element) {
var key = getKey(element);
return function() {
return getKey(this) === key;
}
}
$(document).on("mouseenter", "a", function() {
$("a").filter(sameGroupAs(this)).addClass(
"active");
}).on("mouseleave", "a", function() {
$("a").filter(sameGroupAs(this)).removeClass(
"active");
});
});
})(jQuery)