【问题标题】:Custom jQuery extension won't work with Drupal自定义 jQuery 扩展不适用于 Drupal
【发布时间】:2011-07-08 21:00:00
【问题描述】:

尝试将自定义 jQuery 扩展绑定到 Drupal 7 我在脚本中遇到了“this”对象的问题。

我的代码被正确包装以支持无冲突并且在 drupal 之外可以正常工作,但在 drupal 页面上的相同代码会失败。

我在扩展的顶部添加了 console.log(this),发现在 drupal 外部,我得到了一个适当的 jQuery 对象,其中包含匹配的节点。在 drupal 中,我得到了匹配的元素。

Drupal 7 有 jQuery 1.4.4,我的代码在 jQuery 1.4.2 和 1.6.2 中运行良好。

对此我能做些什么?

【问题讨论】:

  • 我下载了 jQuery Update 模块,看看它是否是特定的 jQuery 版本,它仍然与 jQuery 1.5.2 有同样的问题。
  • 我还添加了 console.log(jQuery('#Navigation'));看看我从中得到了什么,它有同样的问题:当在 drupal 页面上运行时,它返回一个 DOMElement 而不是一个 jQuery 对象。

标签: jquery drupal this-keyword


【解决方案1】:

没有看到你的代码,很难给你一个很好的答案。不久前我遇到了一个类似(听起来)的问题,并使用这种技术在 Drupal 7 站点上包装内联 JQuery,这解决了我的问题:

(function($) {
    $(document).ready(function(){

        // Insert your code here.

    });
})(jQuery);

问题在于 Drupal 7 对命名空间有严格要求,并且不允许像在 Drupal 6 中那样将默认的 $ 作为函数别名。

【讨论】:

  • 间接地解决了我的问题......调用我的扩展的所有重要的一行没有包含在 $(document).ready 调用中。我不完全确定为什么“this”对象有奇怪的行为,但在其他方面似乎可以工作......但我只需要我的代码来等待页面解决。
【解决方案2】:

Drupal 中的另一种技术是将 jQuery 包装在这个里面:

jQuery(document).ready(function($) {
  // Insert code here.
});

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    相关资源
    最近更新 更多