2

我正在努力让我的 jquery 在 Sitefinity 中保持有序。将 Sitefinity 小部件拖到页面上会破坏我的母版页中的脚本链接。

Sitefinity 论坛上已经启动了一个主题:http ://www.sitefinity.com/developer-network/forums/developing-with-sitefinity-/how-to-adjust-around-sitefinity-scripts#S2PcF40QrkClp_vEDb6cqg

任何帮助将不胜感激。我不能是唯一遇到这个问题的人......

先感谢您,

4

2 回答 2

2

使用 sf:resourcelinks 确保加载 jQuery 时 Sitefinity 和 RadControls 之间没有冲突。

<sf:resourcelinks id="ResourceLinks1" runat="server">
    <sf:ResourceFile JavaScriptLibrary="JQuery" />
</sf:resourcelinks>

使用 asp:scriptmanager 代替 radscriptmanager。

使用JavascriptEmbedControl在固定位置加载脚本,以确保混合匹配加载外部和内联脚本时文件加载

<sf:JavaScriptEmbedControl
    id="script1"
    runat="server"
    scriptembedposition="InPlace"
    url="somescript.js" 
/>

有关加载 jQuery 的最佳方式的更多信息,请查看此论坛主题。并在此处阅读使用 JavascriptEmbedControl icw VisualStudio 时的免责声明。

于 2013-01-13T09:41:22.593 回答
0

您可以使用 jQuery noConflict() 来解决您的情况。

加载您的 jQuery 文件,然后包含依赖于该 jQuery 版本的所有库,一个在另一个之下。

Example:

include jQuery 1.11
include Bootstrap jQuery plugin
include Response.js
so on.,

当所有依赖库在您的 jQuery 版本下面一个接一个地添加时... 当前 $ 范围内的 jQuery 版本将用于初始化库。因此,您的依赖库将按预期使用 jQuery 版本被包含/增强。万岁!!

最后,为了让 Sitefinity RAD 控件和小部件与 CMS jQuery 版本一起正常工作,您需要将 jQuery 对象完全移动到其他一些变量名称,如下所示。

jq1_11 = $.noConflict(true);

然后在您的自定义脚本中使用 jq1_11 而不是 $ 或 jQuery。

或者

如果您仍然喜欢使用 $,请使用下面的匿名函数遵循闭包模式。

(function($){
     $("#id").on("click", handlerFn);
})(jq1_11);

缺点:有些人会抱怨使用 2 个版本的 jQuery,但这只会发生在

内联编辑或当 RAD 控件在页面中或在 sitefinity 后端时

好处:您可以使用最新的库和最新的 jQuery

于 2015-10-10T11:26:13.430 回答