• Как написать функцию, которая будет выводить массив функций, которые выводят порядковый номер массива?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Все ваши функции ссылаются на одно и то же значение - i. Что бы все работало в момент определения функции надо сохранять это значение.

    function generateArr(count) {
        var arr = [];
        for (var i = 0; i < count; i++) {
            arr[i] = makeFunction(i);
        }
        return arr;
    }
    
    function makeFunction (i) {
        return function () {
            alert(i);
        }
    }


    приведенный мой код будет работать, так как при передаче переменной в качестве аргумента функции происходит копирования значения (ну... не совсем, там copy-on-write всякие применяются но все же суть та же).

    Что бы чуть лучше читалось...

    function generateArr() {
        var arr;
        for(var arr = []; arr.length < 100;arr.push(null));
    
        return arr.map(function (_, i) {
            return function () {
               alert(i);
            }
        })
    }
    Ответ написан
    1 комментарий
  • Какая разница между jQuery .bind() .live() .delegate() и .on()?

    zimorodok
    @zimorodok
    bind — навешивает обработчик непосредственно на элемент (когда тот есть в DOM-е). При удалении элемента так-же удаляется.

    live — навешивает обработчик на document, используется делегирование (всплытие событий). Позволяет создать обработчик до того, как элемент появится в DOM-е. При удалении элумента обработчик не удаляется, а просто перестает срабатывать. Если в DOM снова вставить элемент, подходящий под селектор, обработчик снова отработает.

    delegate — точно так-же, как и live, использует делегирование, только явно указывается узел, на который навешивается обработчик. (удобно для разработки модулей, или как их еще называют, виджетов)

    on — объединяет возможности как bind, так и delegate (зависит от формы использования). Как верно было замечено, остальные методы deprecated и в новых версиях поддерживаться не будут. Елиный метод введен для того, чтобы не возникали вопросы какой метод использовать.
    Ответ написан
    Комментировать