понедельник, 9 августа 2010 г.

JavaScript, jQuery: обертки

Когда-то можно было пользоваться такой функцией без всякого сомнения:


function $(id) { 
    return getElementById(id); 
}


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

В таком случае можно либо явно указывать jQuery вместо знака доллара, либо прибегнуть к более изящному решению - оберткам:

Было:


function f(arg1, arg2) {

$('#some_selector')// ...

}

Стало:

function f(arg1,arg2) {
(function($) {
        $('#some_selector')// ... code
    })(jQuery)

}

Здесь мы создаем анонимную функцию и сразу же ее вызываем. Она представляет собой старую функцию с несколько измененной сигнатурой: в качестве параметра она получит jQuery, а "старые" аргументы будут доступны ей благодаря замыканиям.