Javascript 如何删除jQuery';脚本文件中的$的使用情况如何?

Javascript 如何删除jQuery';脚本文件中的$的使用情况如何?,javascript,jquery,webmethods,Javascript,Jquery,Webmethods,我试图在SoftwareAgWebMethods开发IDE中使用jQuery的控件。。现在,我从以下URL导入jQuery的脚本: 运行webMethods IDE部署的页面时,在多个浏览器中(两个蓝色箭头之间)会出现以下错误: 中间的错误是正常的错误(即旁边有蓝色箭头的错误),因为页面中的其他东西也使用“$”,当jQuery也使用它时,它会导致另一个“$”用户感到困惑,因为这另一个“$”用户对“$”符号有控制权。 为了证实这一点,以下是我所做的: 我编写了以下javascript代码(不要

我试图在SoftwareAgWebMethods开发IDE中使用jQuery的控件。。现在,我从以下URL导入jQuery的脚本:

运行webMethods IDE部署的页面时,在多个浏览器中(两个蓝色箭头之间)会出现以下错误:

中间的错误是正常的错误(即旁边有蓝色箭头的错误),因为页面中的其他东西也使用“$”,当jQuery也使用它时,它会导致另一个“$”用户感到困惑,因为这另一个“$”用户对“$”符号有控制权。

为了证实这一点,以下是我所做的:

我编写了以下javascript代码(不要担心
CAF.model
的内部用法。它的
.id
函数返回jQuery处理所需控件的客户端id)

。。。这导致了另一个“getAttribute”错误,如上图所示

然后我试着:

jQuery.noConflict();
alert(jQuery(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id).val());
而且没有错误

此外,如果我使用代码:

jQuery.noConflict();
alert($(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id).val());
它导致底部蓝色箭头错误:因为使用“$”符号的其他实体无法确定函数“val”是什么

上面的内容向我证实了这些错误是因为jQuery的脚本可能在那里使用了“$”符号

现在,为了尝试解决这个问题,我尝试在调用jQuery自己的脚本文件的脚本块之前添加另一个脚本块,并输入以下代码:

jQuery.noConflict();
这导致了第一个蓝色箭头错误:…'jQuery在文档的早期没有定义,这是有道理的


所以基本上,我需要告诉主jQuery脚本文件也不要使用“$”符号。。我如何做到这一点?

您不必担心jQuery的内部结构,它们在任何情况下都可以工作

最后一条错误消息表示您试图调用DOM元素上的jQuery方法(
.val()
),而不是jQuery对象

你已经知道了

$(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id)
导致错误,那么为什么要调用
jQuery.noConflict()
来更改这一点呢

jQuery.noConflict()
只需“释放”
$
,并将以前拥有的值赋回

您可以在整个代码中使用
jQuery
,也可以将其分配给其他变量,例如:

var $j = jQuery.noConflict();
$j(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id);
ready
事件处理程序还接收对jQuery的引用作为第一个参数,因此您(并且应该)将所有jQuery代码放在其中:

jQuery(function($) { 
    // $ will refer to jQuery
});

但这不允许您访问该函数之外引用的任何
$
的值需要在加载jQuery后立即在脚本块中运行

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    var jq = jQuery.noConflict();
</script>

var jq=jQuery.noConflict();
上面将jQuery别名为
jq
,而不是
$


jQuery的插件传入jQuery对象,并在内部将其别名为
$
,但作用域不是全局的,因此无需在插件中更改它。

一种很好的方法是使用自执行函数,如下所示:


将其放在代码的结尾body标记之前,以加速页面加载。尽管使用CAF和Prototype,您永远不会注意到加速:)

第一个错误不意味着您没有正确加载jQuery吗?“需要在加载jQuery后立即在脚本块中运行。”-->这为我解决了:)哇,这太奇怪了;我读了这个答案,觉得很好,然后意识到是我写的。多么自恋啊!写这篇文章的时候更是如此。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    var jq = jQuery.noConflict();
</script>
(function ($) {

  // Your jQuery code here - just use $ as normal!
  $("#coolselector").cooljQueryPlugin();

})(jQuery);