Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос к знатокам jQuery, (function($) {не раб. функц.})(jQuery); 
V
    Опции темы
Psytodelist
Дата 13.6.2011, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



Здравствуйте! Так как у меня джейквери юзается вместе с прототайпом,
мне посоветовали для работоспособности код оборачивать в

Код

(function($) {

})(jQuery);


Только вот функции, которые создаются внутри этой обертки не работают,
поэтому приходится вне этой обертки писать эти функции, но уже без $, а с jQuery.
Подскажите, как избежать написание jQuery вместо $.

Пример неработающей функции:

Код

(function($) {

function del_photo(blockid) {
        $(".block_" + blockid).parent().effect('fade');
    }

})(jQuery);


Пример работающей функции:

Код

function del_photo(blockid) {
        jQuery(".block_" + blockid).parent().effect('fade');
    }


 smile  smile 

PM MAIL   Вверх
нуп
Дата 13.6.2011, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 13
Всего: 33



Вначале пропишите 
Код

jQuery.noConflict();

PM MAIL   Вверх
Amphiluke
Дата 13.6.2011, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Выводите в глобальную область видимости как можно меньше функций. В идеале должна быть только одна анонимная функция вида
Код

(function($) {

    // здесь все функции. Они не будут доступны из глобальной области видимости

})(jQuery);

Скажите, какая у вас надобность в «глобальных» функциях и почему нельзя код, вызывающий эти функции, также включить в обертку общей анонимной функции? Например,
Код

(function($) {

    function del_photo(blockid) {
        $(".block_" + blockid).parent().effect('fade');
    }

    $(".photo").click(function() { del_photo($(this).attr("id")); });

})(jQuery);

И всё работает, мне не нужен доступ к ф-ции del_photo извне.

Впрочем, для одноразовых скриптов существование именованных функций в глобальной области видимости обычно не страшно. Это важно для кода, предназначенного для многоразового использования в заранее неизвестном окружении, например, для плагинов.


Это сообщение отредактировал(а) Amphiluke - 13.6.2011, 10:23
PM   Вверх
Psytodelist
Дата 13.6.2011, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



Куча воды и никто ничего по существу не написал.
jQuery.noConflict(); мне не нужен, мне не нужен никакой
знак кроме $, к которому я уже привык.

Цитата

И всё работает, мне не нужен доступ к ф-ции del_photo извне.

Причём тут нужен Вам или не нужен Вам доступ извне? Речь сейчас идет о том, что нужно мне.
PM MAIL   Вверх
нуп
Дата 13.6.2011, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 13
Всего: 33



Уууу. Вам нужно, вы и делайте  smile 
PM MAIL   Вверх
Psytodelist
Дата 13.6.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



просто коллбек аякса выдает уникальные данные и вставляет это в шаблон, который вставляется в боди.див. в этом шаблоне есть селекты. Стоят ончейнджы на селектах и соотвественно вызывается функция с параметром, полученным из аякса. Вот потому и надо.
PM MAIL   Вверх
blah
Дата 13.6.2011, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 25.9.2008
Где: моя тачка, чувак?

Репутация: нет
Всего: 17



Цитата(Psytodelist @  13.6.2011,  01:25 Найти цитируемый пост)
Подскажите, как избежать написание jQuery вместо $.


Никак. 

Цитата(Psytodelist @  13.6.2011,  21:41 Найти цитируемый пост)
Куча воды и никто ничего по существу не написал.
jQuery.noConflict(); мне не нужен, мне не нужен никакой
знак кроме $, к которому я уже привык.

Переопределить псевдоним на 
Код

mneNeNujenNikakoyZnakKrome$ = jQuery.noConflict();

раз привыкли.
PM MAIL ICQ   Вверх
Psytodelist
Дата 14.6.2011, 00:33 (ссылка)  | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.3.2010

Репутация: нет
Всего: нет



spaSiBoZaVniMaNiE
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.