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