JQuery формы плагин проблема noConflict - PullRequest
3 голосов
/ 12 июля 2010

Я пишу букмарклет, в котором я хочу использовать плагин jquery forms.

Проблема, с которой я сталкиваюсь, заключается в том, что веб-страница, на которой можно использовать букмарклет, может использовать другую библиотеку js, которая уже использует '$'. Нет проблем, я могу сказать 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 ]

2 голосов
/ 12 июля 2010

Скорее всего, ваш код, инициализирующий форму, вызывается сразу после добавления элемента 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.

Функция обратного вызова будет запущена только после загрузки файла сценария.

2 голосов
/ 12 июля 2010

Плагин Form использует технику, позволяющую ему использовать $ локально в своем собственном коде, не вступая в конфликт с любыми вызовами jQuery.noConflict().

Когда вы настраиваетеФорма для обработки плагином, просто используйте jQuery вместо $.Если проблема все еще не устранена, нам потребуется специальный код, чтобы помочь.

...