0

我想使用 jquery,但我想改变我调用它的方式$jQuery其他类似的东西:tt

例子:

tt("#selector").click(etc...)

代替:

$("#selector").click(etc...)
jQuery("#selector").click(etc...)

我知道您可以通过在某处更改 jquery 文件来做到这一点。

请不要使用noConflict功能,我需要更改 jquery 文件本身。

为什么我不想使用:noConflict,以及将 jquery 分配给变量?

因为我想将 jquery 加载到页面,但是在这个页面中,jquery 可能已经被站点所有者加载了。我不想覆盖他的 jquery,因为也许他使用了不推荐使用的函数,如果我加载更新的 jquery,我会破坏他的 javascript。

例如,网站 html:

<html>
    <head>
        <script src="jquery.1.9.js"></script>


        <script>
            (function() {        
                var ga = document.createElement('script');
                ga.type = 'text/javascript'; 
                ga.async = true;
                ga.src = 'http://example.com/myOuterScript.js';
                var s = document.getElementsByTagName('script')[0];
                s.parentNode.insertBefore(ga, s);
            })();
        </script>
    </head>
    <body>
    </body>
<html>

以及动态加载的脚本:myOuterScript.js 将加载 jquery、css 和其他脚本。

我只是不想在我所在的当前站点中与 jquery 发生冲突。

4

5 回答 5

3

您可以分配jQuery给您喜欢的任何变量:

var tt = jQuery;
var foo = tt('#foo').text();

$尽管如果不是为了避免与另一个框架的变量发生冲突,我看不到这一点。

于 2013-11-14T11:21:08.587 回答
1

试试jQuery.noConflict

var tt= jQuery.noConflict();

var foo = tt('#foo').text();

根据Rory McCrossan的建议更新

var tt = jQuery;
var foo = tt('#foo').text();
于 2013-11-14T11:23:13.190 回答
1

正如 Rory 所说,您可以简单地将 jQuery 分配给另一个变量并使用它。您还可以创建一个外壳并将 jQuery 作为参数传递给它,就像这样......

(function(tt) {
    tt("#selector").click(etc...);
})(jQuery);
于 2013-11-14T11:23:27.157 回答
1

您不使用的要求noConflict对我来说毫无意义,但如果它真的很重要,只需在 jQuery 源代码中进行搜索和替换。

于 2013-11-14T11:31:16.877 回答
1

创建一个不同的别名而不是 jQuery 以在脚本的其余部分中使用。

var j = jQuery.noConflict();

// Do something with jQuery
j( "div p" ).hide();

// Do something with another library's $()
$( "content" ).style.display = "none";
于 2013-11-14T11:23:28.157 回答