jquery表单插件noConflict问题

时间:2010-07-11 22:39:17

标签: jquery bookmarklet jquery-forms-plugin

我正在编写一个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

2 个答案:

答案 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.

只有在加载脚本文件后才会运行回调函数。