Сокращение для сценариев взлома jQuery ($). Должен использовать длинную версию

0

Недавно я взял у кого-то код и у меня возникла проблема (больше раздражения), которой я никогда раньше не сталкивался. Это также трудно исследовать.

В основном этот человек использовал jQuery для выбора элементов управления, а не сокращенной версии $. Например

jQuery("#controlid").val();

используется вместо

$("#controlid").val();

Последний разрывает любой скрипт jQuery, который я создаю, используя стенографию $.

Кто-нибудь испытал что-то подобное раньше? Может быть, что-то маленькое, что мне нужно изменить, чтобы эта досада исчезла?

Заранее спасибо.

  • 0
    Какое сообщение об ошибке вы получаете, когда скрипт «ломается», если значение $ не определено, вы можете назначить ему jQuery: $ = jQuery
  • 0
    Разве var $ = jQuery решит вашу проблему?
Показать ещё 5 комментариев
Теги:

1 ответ

2
Лучший ответ

Решение # 1: jQuery.noConflict()

Многие библиотеки JavaScript используют $ как функцию или имя переменной, как это делает jQuery. В случае jQuery, $ является просто псевдонимом для jQuery, поэтому все функции доступны без использования $. Если вам нужно использовать другую библиотеку JavaScript вместе с jQuery, верните управление $ обратно в другую библиотеку с вызовом $.noConflict(). Старые ссылки $ сохраняются во время инициализации jQuery; noConflict() просто восстанавливает их.

$.noConflict();
// Code that uses other library $ can follow here, not jQuery

Решение №2: $ Alias

// Option #1, Document Ready Event
jQuery(function($) {
    // Code that uses jQuery $ can follow here.
});

// Option #2, Anonymous Invocation
(function($) {
    $(function() {
        // More code using $ as alias to jQuery
    });
})(jQuery);

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

  • 0
    Хорошо, в общем, мне нужно найти сценарий, вызывающий проблемы, и понять, почему он принимает контроль над $, и попытаться обойти его. Я думаю, что это может быть немного хакерским, чтобы положить var $ = jQuery или $.noConflict(); поверх каждого нового сценария, который я создаю.
  • 0
    Оказывается, мне просто нужно было прокомментировать $.noConflict(); в дополнение к одному из сценариев, который я написал ранее. Спасибо за помощь, я действительно ценю это :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню