【问题标题】:Django admin - jQuery namespaceDjango 管理员 - jQuery 命名空间
【发布时间】:2011-11-03 13:14:39
【问题描述】:

我正在尝试在我的 Django 管理站点中使用某些 jQuery 插件。

Django 管理员将 jQuery 命名空间设置为 django.jQuery(以避免冲突)

如果我没有 jQuery 的默认 $ 命名空间,插件将无法工作,对吗?

我必须做类似的事情

window.$ = django.jQuery

?

如何以及在哪里可以更改整个管理站点的这个命名空间?

【问题讨论】:

    标签: jquery namespaces django-admin


    【解决方案1】:

    我建议您将 jQuery 保留在 django.jQuery 命名空间中,这在将 cms 与可能发生冲突的不同模块一起使用时是一个好主意。 但是你把你的插件包装在这样的里面:

    ;(function($){
      // here $ is only in this scope and so totally inobrusive
      // plugin code
    })(django.jQuery);
    

    【讨论】:

    • 这可以工作,但每次添加或更新插件时都必须这样做...... :(
    【解决方案2】:

    其他人也有类似问题,使用了解冲突功能:http://www.lokkju.com/blog/archives/143

    我不确定 Django 使用什么版本,但我认为使用 django 命名空间的意义在于它可以使用自己版本的 jQuery 进行内部操作,但仍然可以让您为自己的工作使用不同的版本.

    【讨论】:

    • 最后我使用了我的 jQuery 版本,因为我在花了一个小时之后没有成功重命名命名空间。还是谢谢。
    【解决方案3】:

    实际上,大多数插件都需要“jQuery” - 而不是 $ - 才能使用,然后像 dmidz 的回答一样自行提供 $。

    因此,插入

    var jQuery = django.jQuery;
    

    在您的外部参考之前。如果您要加载一堆第三方 jQuery 插件,请将上面的行放在插件前面的脚本标记中。

    另请参阅我五个月前的问题How to provide $ to third-party, external jQuery plugins in Django admin

    【讨论】:

    • 我实际上不得不同时做var jQuery = django.jQuery;var $ = django.jQuery;。谢谢
    • 也。谨防。如果另一个插件已经包含它自己的 jQuery,您将覆盖它,并以灾难告终,因为另一个插件现在将丢失...jquery.noConflict 来救援,但总是让我头疼,只是想一想。 ..但是是的,这个解决方案首先会起作用;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多