我正在编写一个bookmarklet,我想在其中使用jquery表单插件。
我遇到的问题是可能使用书签的网页可能正在使用另一个已经使用'$'的js lib。没问题,我可以告诉jQuery使用noConflict()
然而,jQuery的表单插件也使用了我无法控制的'$'。有没有办法让我指定这个插件不使用$并使用jQuery代替?
更多细节..
正如TNi所说,我可能误解了这个问题。
这是我做的事情
我正在使用Safari 5.这就是我的工作 (jquery已经加载) ....
var scriptElem = docEl.createElement('script');
scriptElem.setAttribute('src',"http://localhost:81/p/a2b/jquery.form.js");
scriptElem.setAttribute('type','text/javascript');
document.getElementsByTagName('head')[0].appendChild(scriptElem);
然后
jQuery(docEl).ready(function() {
jQuery('#a2b_cart').ajaxForm(function () { alert (" yo");});
});
我在javascript控制台上看到的内容:
jQuery("#a2b_cart").ajaxForm is not a function
答案 0 :(得分:2)
Form Plugin使用的技术允许它在自己的代码中本地使用$
,而不会与对jQuery.noConflict()
的任何调用冲突。
当您设置要由插件处理的表单时,只需使用jQuery
代替$
。如果问题仍然存在,我们需要查看具体代码才能提供帮助。
答案 1 :(得分:2)
有可能,在添加script
元素之后,但在加载之前,会立即调用初始化表单的代码。由于jQuery已经加载,请通过getScript
调用表单文件:
jQuery.getScript("http://localhost:81/p/a2b/jquery.form.js", function () {
jQuery('#a2b_cart').ajaxForm(function () { alert("yo"); });
// Rest of your code here, or call out to another function
});
// Don't place code here, form.js hasn't loaded yet.
只有在加载脚本文件后才会运行回调函数。