我正在尝试在 Software AG webMethods 开发 IDE 中使用 jQuery 的控件。现在我从以下 URL 导入 jQuery 的脚本:
http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
当我运行 webMethods IDE 部署的页面时,在多个浏览器中出现以下错误(两个蓝色箭头之间):
中间的错误是我得到的正常错误(即旁边带有蓝色箭头的错误),因为页面中的其他内容也在使用“$”,而 jQuery 也使用它,它导致另一个“$”用户感到困惑,因为另一个“$”用户可以控制“$”符号..
为了证实这一点,这是我所做的:
我写了下面的 javascript 代码(不用担心 CAF.model
的内部使用。它的 .id
函数返回控制 jQuery 处理它所需要的)
alert($(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id).val());
...它导致了上图中显示的另一个“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 自己的脚本文件的脚本 block 之前添加另一个脚本 block ,并放入以下代码:
jQuery.noConflict();
这导致了第一个蓝色箭头错误:.. 'jQuery' 没有在文档的早期定义,这是有道理的..
所以基本上,我需要以某种方式告诉主 jQuery 脚本文件也不要使用“$”符号。我该怎么做?
最佳答案
jQuery.noConflict();
需要在加载 jQuery 后立即在脚本 block 中运行。
<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>
上面的 jQuery 别名为 jq
而不是 $
。
jQuery 插件传入 jQuery 对象并在内部将其别名为 $
,但范围不是全局的,因此无需在插件中更改它。
关于javascript - 我如何也从脚本文件中删除 jQuery 对 $ 的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9633812/