Динамическое количество живых событий - PullRequest
1 голос
/ 01 апреля 2011

У меня проблемы с реализацией динамического числа событий .live ().

Существует цикл для определения количества страниц, на которые нужно создать ссылки, возвращаемых при вызове ajax.

В основном я получаю 1 из 3 (-1, 0, [объект объекта]) результатов в зависимости от того, как я передаю количество страниц внутри живого события.

Вот как это происходит сейчас, когда возвращается только 0 для каждого живого события. Чтобы получить -1, я бы удалил объявление contractPage и поместил его в функцию net.tsn.contract.log, или [объектный объект], я бы передал страницу в функции обработчика live.

for (var page=(contractId['pages']-1); page>=0; page--) {
    $("#jpgLinks").prepend("<span><a href='#' id='jpgLink"+page+"'><img src='img/JPG-Link_con-" + (page+1) + ".png' alt=''><br>Page " + (page+1) + "<\/a><\/span>");
    var contractPage = contractId['contract'] + "-" + page;
    $('#jpgLink'+page).live('click', function() {
        showWorkingDialog();
        net.tsn.contract.log(contractPage, "DOWNLOAD_JPG", '<?php echo $_GET['lead']; ?>');
    });
}

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Ах, я вижу, в чем здесь проблема.Вам нужно сделать закрытие, чтобы закрыть значение page для каждого события live().

Поместите эту функцию где-нибудь в своем коде (перед циклом for):

function _contractPage(contractPage, page){
    return function(){
        contractPage = contractPage  + "-" + page;
        showWorkingDialog();
        net.tsn.contract.log(contractPage, "DOWNLOAD_JPG", '<?php echo $_GET['lead']; ?>');
    }
}

А затем измените цикл for следующим образом:

for (var page=(contractId['pages']-1); page>=0; page--) {
    $("#jpgLinks").prepend("<span><a href='#' id='jpgLink"+page+"'><img src='img/JPG-Link_con-" + (page+1) + ".png' alt=''><br>Page " + (page+1) + "<\/a><\/span>");
    var contractFunc = _contractPage(contractId['contract'], page);
    $('#jpgLink'+page).live('click', contractFunc);
}

Пример: http://jsfiddle.net/T8UjA/

0 голосов
/ 01 апреля 2011

Это код для каждого из 3 условий:

-1

for (var page=(contractId['pages']-1); page>=0; page--) {
    $("#jpgLinks").prepend("<span><a href='#' id='jpgLink"+page+"'><img src='img/JPG-Link_con-" + (page+1) + ".png' alt=''><br>Page " + (page+1) + "<\/a><\/span>");
    $('#jpgLink'+page).live('click', function() {
        showWorkingDialog();
        net.tsn.contract.log(contractId['contract'] + "-" + page, "DOWNLOAD_JPG", '<?php echo $_GET['lead']; ?>');
    });
}

0:

for (var page=(contractId['pages']-1); page>=0; page--) {
    $("#jpgLinks").prepend("<span><a href='#' id='jpgLink"+page+"'><img src='img/JPG-Link_con-" + (page+1) + ".png' alt=''><br>Page " + (page+1) + "<\/a><\/span>");
    var contractPage = contractId['contract'] + "-" + page;
    $('#jpgLink'+page).live('click', function() {
        showWorkingDialog();
        net.tsn.contract.log(contractPage, "DOWNLOAD_JPG", '<?php echo $_GET['lead']; ?>');
    });
}

и [объект Object]:

for (var page=(contractId['pages']-1); page>=0; page--) {
    $("#jpgLinks").prepend("<span><a href='#' id='jpgLink"+page+"'><img src='img/JPG-Link_con-" + (page+1) + ".png' alt=''><br>Page " + (page+1) + "<\/a><\/span>");
    $('#jpgLink'+page).live('click', function(page) {
        showWorkingDialog();
        net.tsn.contract.log(contractId['contract'] + "-" + page, "DOWNLOAD_JPG", '<?php echo $_GET['lead']; ?>');
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...