чудо{вищные} заметки

Sorry for my terrible english. My native language is PHP.

jQuery.facts II

Выдам ещё одну порцию фактов, связанных с jQuery.

  • jQuery.get() и jQuery.post() принимают последним четвёртым параметром dataType. Ну принимает и бог с ним, скажут некоторые. А другие смогут этот факт использовать во благо. Вот пример такого «блага»:
    $.post(backend_url,params,callback,’script’); // и вуаля — все вернувшееся с бэкэнда интерпретируется как javascript.Опять-таки внимательный (и просвещённый) читатель скажет «ну и нафига? есть же jQuery.getScript ?». Тут мне ответить уже нечего. Разве что напомнить о том факте, что getScript передаёт параметры GET-ом, длина которого как мы знаем весьма ограничена.
  • Кстати о jQuery.getScript() — начиная с версии 1.2.1 getScript умеет кросс-доменные запросы (все урлы начинающиеся с http автоматом будут тянуться не через XmlHttpRequest, а посредством добавления тега script). Это открыло нам такие просторы, что ни в сказке сказать, ни трактором убрать… (правда имеется одно досадное недоразумение, но видимо оно беспокоит только меня UPDATE: пофиксили).
  • Не совсем jQuery, но тоже важный факт — расчудесный плагин jQuery.livequery аналог Behaviour — помогающий создавать скрипты работающие «на манер css».

    $(‘span.bugaga’).livequery(‘click’,function(){
    alert(‘Бугага’);
    });
    $(‘span.gygygy’).livequery(function(){
    $(this).bind(‘click’,function(){
    alert(‘Надо же — кликнули. Гыгыгы’);
    });
    alert(‘В документе появились span-ы c классом gygygy’);
    });

    Поясняю — работает это так же как и jQuery.bind, за одним лишь исключением — элементов на странице к моменту вызова функции может и не быть. Когда они появяться — livequery «навесит» на них нужные обработчики. Очень удобно. Но будьте внимательны и осторожны — не стоит увлекаться — чем больше элементов будут переданы в livequery, тем «тормознее» будет система — каждые 20мс проводиться поиск элементов в целью найти и обезвредить навесить нужные эвенты (а также после разнообразных манипуляций с dom).

  • И последний на этот раз факт — как известно jQuery «оборачивается» в функцию $() — уж больно кратко,красиво и удобно в использовании. Но в эту же функцию любят «оборачиваться» многие известные js-фреймворки. И это казалось бы ставит крест на совместном их использовании… Но не в случае с jQuery — его авторы понимают что они не одни на белом свете. jQuery.noConflict(); «отпустит» функцию $(), правда сам код использующий jQuery в этом случае должен содержать либо полное название функции [ jQuery(«selector»).action(); ] или же должен быть «завёрнут» в анонимную функцию [ (function($) { original_code})(jQuery); ]
Реклама

Октябрь 18, 2007 - Posted by | dev, jquery, js, web

3 комментария »

  1. Полезно.

    комментарий от Sam | Октябрь 18, 2007

  2. если вы укажете dataType=»script» то jquery автоматом изменит тип запроса на get, судя по документации.

    http://docs.jquery.com/Ajax/jQuery.ajax

    Но посмотрев код jquery, я подтверждения этому не нашел.

    комментарий от Anton | Декабрь 17, 2007

  3. очевидно имелось ввиду это:

    [cut]
    if ( !s.url.indexOf(«http») && s.dataType == «script» ) {
    var head = document.getElementsByTagName(«head»)[0];
    var script = document.createElement(«script»);
    script.src = s.url;
    [/cut]

    комментарий от MiRacLe | Декабрь 17, 2007


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: