Почему я должен использовать определение jQuery вместо $? - PullRequest
1 голос
/ 22 июля 2010

Я новичок в jQuery ...

Я использовал один плагин jQuery (на самом деле SimpleModal Plugin) на своей странице.Это не сработало, пока я не заменил $ на jQuery!

$(document).ready(function() {    -->    jQuery(document).ready(function() {

Сейчас работает, но у меня все еще есть проблема!Я хочу закрыть это модальное окно, нажав на кнопку «Отмена» на странице.В руководстве SimpleModal сказано: «Вы можете программно закрыть открытый в данный момент диалог, вызвав $ .modal.close ();»но это не работает для меня.Я заменил «$» на «jQuery», но он не работает.

Я хочу знать, почему я должен использовать определение jQuery ?!и что я должен делать в этой ситуации?!

PS Этот код работал правильно при нажатии кнопки:

<script type="text/javascript" language="javascript">
    jQuery(document).ready(function() {
        jQuery('#cancelID').click(function() {
            alert ("test");
        });
    });
</script>

Этот код не выполняет правильные действия:

<script type="text/javascript" language="javascript">
    jQuery(document).ready(function() {
        jQuery('#cancelID').click(function() {
            $.modal.close();
        });
    });
</script>

Спасибо за ваше время и помощь другим.

Ответы [ 3 ]

3 голосов
/ 22 июля 2010

В этом случае вы по-прежнему вызываете его как свойство объекта jQuery, например:

jQuery(document).ready(function() {
    jQuery('#cancelID').click(function() {
        jQuery.modal.close();
    });
});

Или используйте $ внутри функции ready (она передается в качестве первого параметра) следующим образом:

jQuery(function($) {
    $('#cancelID').click(function() {
        $.modal.close();
    });
});

А почему $ не работает? Найдите в своем коде jQuery.noConflict() или $.noConflict(). Эта функция освобождает контроль над $, поэтому он больше не совпадает с jQuery, обычно это для других библиотек, чтобы контролировать его, например, Prototype.

1 голос
/ 22 июля 2010

Вы должны знать следующее:

  1. jQuery определяет только одну глобальную (на уровне документа / окна) переменную: $
  2. Другие библиотеки могут бытьиспользуя глобальную переменную $ (пример: Prototype)
  3. Таким образом, если вы используете другую библиотеку JS вместе с jQuery, jQuery воспроизводит ее, предлагаяфункция noConflict.Эта функция в основном переназначает значение $ другой библиотеке и использует ключевое слово jQuery.
  4. В плагинах jQuery уже используется ключевое слово jQuery, при условии, что вы можете использовать другие библиотеки.
0 голосов
/ 22 июля 2010

Один потенциально полезный трюк, который я нашел, заключался в том, что вы можете окружить свой $ -используемый код jQuery с помощью

(function($){

...

})(jQuery)

И все ваши знаки $ будут работать снова, без необходимости менять их индивидуально на "jQuery".

...