• Открыть меню    

    Вспомогательные функции jQuery

    вспомогательные функции jquery Вспомогательные функции jQuery – это функции принадлежащие пространству имен jquery($), но не воздействующий на обернутый набор элементов (в отличие от методов jquery). Такие функции определены не глобальном пространстве имен (window), а в пространстве имен jquery($).

    Вспомогательные функции, следуя логики, не должны воздействовать на DOM-объекты (оставим это методам), то есть вспомогательные функции воздействуют на объекты js или выполняют какие-либо специфические операции.

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

    Примеры вспомогательных функций jquery

    $.trim

    $.trim(value) - удаляет начальные и концевые пробельные символы из строки value и возвращает результат

    • value - строка
    • возвращаемое значение - усеченная строка

    jQuery

    $(document).ready(function(){
    
    console.log($.trim(" Привет Медвед             ")+"1"); // Привет Медвед1
    
    });

    $.each

    У jquery есть метод each для обхода элементов в обернутом наборе, вспомогательная функция jquery each позволяет обойти элементы массива и объекты jquery

    $.each(container,callback)

    • container - массив или объект по элементам которого будет произведен обход
    • callback - функция, будет выполнена для каждого элемента в container
      • Первый параметр этой ф-и - индекс элемента массива или св-ва объекта
      • Второй параметр этой ф-и - значение элемента массива или св-ва объекта. Контекст(this) содержит значение, которое передается во втором параметре
    • возвращаемое значение - объект контейнер

    jQuery

    $.each( { name: "John", lang: "JS" }, function(i, n){
      console.log( "Name: " + i + ", Value: " + n );
    });
    
    $.each( [0,1,2], function(i, n){
      console.log( "Item #" + i + ": " + n );
    });
    
    //Name: name, Value: John
    //Name: lang, Value: JS
    //Item #0: 0
    //Item #1: 1
    //Item #2: 2

    $.grep

    Вспомогательная функция $.grep предназначена для обхода массивов с целью найти элементы соответствующие определенным критериям.

    $.grep(array,callback,invert)

    • array - массив, элементы которого будут проверяться на включение в новый массив
    • callback - функция, возвращаемое значение которой и определяет будет ли элемент массива включен в новый массив. Если возвращает true, то элемент будет включен в новый массив, при условии что invert не равно true, в этом случае будет ровно наоборот:
      • Первый параметр этой ф-и - значение элемента
      • Второй параметр этой ф-и - индекс элемента массива или св-ва объекта.
    • invert - при true инвертирует нормальное действие функции
    • возвращаемое значение - массив из отобранных значений

    jQuery

    var arr = [
      {"name":"Alan","height":"171","weight":"66"},
      {"name":"Ben","height":"182","weight":"90"},
      {"name":"Chris","height":"163","weight":"71"}
     ];
    
    new_arr = $.grep(arr, function(n, i){ // just use arr
      return n.weight > 70;
    });
    
    console.dir(new_arr);
    
    //0 Object { name="Ben", height="182", weight="90"}
    
    //1 Object { name="Chris", height="163", weight="71"}

    $.map

    $.map выполняет преобразование одного набора значений в другой, вы вспомните о for, однако $.map намного удобнее.

    $.map(array,callback)

    • array - массив, элементы которого будут преобразованы в значения эл-тов нового массива
    • callback - функция, возвращаемое значение которой является измененным значением для элемента нового массива.
      • Первый параметр этой ф-и - значение элемента
      • Второй параметр этой ф-и - индекс элемента в исходном массива.
    • возвращаемое значение - новый массив

    jQuery

    var ObjArr = [{ a:1,b:2 },{ a:2,b:3 },{ a:3,b:4 }];
    var ArrArr = $.map(ObjArr, function(n,i){
       return [[ n.a, n.b ]];
    });
    console.dir(ArrArr);
    /*
    0   [1, 2]
     0   1
     1   2
    
    1   [2, 3]
     0   2
     1   3
    
    2   [3, 4]
     0   3
     1   4
    */

    $.inArray

    Вспомогательная функция $.inArray позволяет найти в массиве нужное вам значение, если он есть, а также его местоположение.

    $.inArray(value,array)

    • array - массив, в котором будет произведен поиск
    • value - значение, по которому будет произведен поиск.
    • возвращаемое значение - индекс первого вхождения значения value в массив array

    jQuery

    var data=[2,4,6,8];
    alert( $.inArray(4,data) ); // 1
    alert( $.inArray("4",data) ); //  -1 

    $.merge

    Для объединения двух массивов в один есть вспомогательная функция $.merge

    $.merge(array1,array2)

    • array1 - массив, в него будут добавлены элементы из второго массива
    • array2 - массив, из него будут добавлены элементы в первый массив
    • возвращаемое значение - первый массив, измененный в процессе объединения

    jQuery

    $.merge( [ 0, 1, 2 ], [ 2, 3, 4 ] )
    // [ 0, 1, 2, 2, 3, 4 ]

    $.extend

    Вспомогательная функция $.extend позволяет расширить объект свойствами других объектов.

    $.extend(deep,target,obj1,obj2,obj3,.....,objN)

    • deep - флаг, необязательный параметр и определяет какое будет копирование: поверхностное (по умолчание, если параметр опущен или равен false; если true, то полное копирование)
    • target - объект, дополняемый свойствами других объектов
    • obj1,obj2,obj3,.....,objN - объекты, свойства данных объектов добавляются в объект target
    • возвращаемое значение - расширенный объект target

    jQuery

    var a = {foo: 1, bar: 1};
    var b = {foo: 2, baz: 2};
    var c = {foo: 3};
    var r = jQuery.extend(a,b,c);
    console.log("A: Foo=" + a.foo + " Bar=" + a.bar + " Baz=" + a.baz);
    console.log("B: Foo=" + b.foo + " Bar=" + b.bar + " Baz=" + b.baz);
    console.log("C: Foo=" + c.foo + " Bar=" + c.bar + " Baz=" + c.baz);
    console.log("R: Foo=" + r.foo + " Bar=" + r.bar + " Baz=" + r.baz);
    console.log("A === R?: " + (a === r));
    
    /*A: Foo=3 Bar=1 Baz=2
    B: Foo=2 Bar=undefined Baz=2
    C: Foo=3 Bar=undefined Baz=undefined
    R: Foo=3 Bar=1 Baz=2
    A === R?: true*/

    Вспомогательные функции jquery для проверки типов объектов

    Функция Описание
    $.isFunction(obj) Возвращает true, если obj является функцией js.
    $.isEmptyObject(obj) Возвращает true, если obj является объектом без свойств, включая свойства полученные посредством prototype
    $.isArray(obj) Возвращает true, если obj является массивом js
    $.isArray([]) // true
    $.isPlainObject(obj) Возвращает true, если obj является объектом js, созданным при помощи фигурных скобок {}
    $.isPlainObject({}); // true
    $.isXMLDoc(obj) Возвращает true, если obj является объектом XML или узлом документа XML

    Пример работы $.isEmptyObject(obj)

    jQuery

    function stub() {};
    
    var objs = [
        function() {},
        { x:15, y:20 },
        null,
        stub,
        "function"
    ];
    
    jQuery.each( objs, function( i ) {
        console.log(objs[ i ]+":"+jQuery.isFunction( objs[ i ]));
    });
    
    /*
        function () {}:true
        [object Object]:false
        null:false
        function stub() {}:true
        function:false
    */

    Пример работы $.isEmptyObject(obj)

    jQuery

    jQuery.isEmptyObject({}); // true
    jQuery.isEmptyObject({ foo: "bar" }); // false

    Вспомогательная функция jquery $.contains

    Вспомогательная функция $.contains проверяет входит ли cont в объект container

    $.contains(container,cont)

    • container - элемент dom, в котором идет проверка на наличие другого элемента (cont)
    • cont - элемент dom, который проверяется на вхождение в другой dom элемент
    • возвращаемое значение true, если в container входит cont, иначе false

    jQuery

    $.contains( document.documentElement, document.body ); // true

    Создаем свою вспомогательную функцию jquery

    Для примера я создам самую простую вспомогательную функцию из всех возможных.

    jQuery

    $.plisFive = function(val){
        var varFive = val * 5;
        return varFive;
    }
    var opa = $.plisFive(5);
    console.log(opa);

    Комментарии к статье