Привязка события клика к добавленной ссылке с помощью jQuery - PullRequest
1 голос
/ 01 октября 2009

У меня есть лайтбокс, который использует jQuery $ .ajax для извлечения данных.

Если я не получаю никаких данных, я добавляю сообщение «нет данных» в свой список и ссылку для сброса параметров поиска. По сути, я пытаюсь добавить событие .click () к добавленной ссылке.

Проблема в том, что функция запускается немедленно, не ожидая события щелчка.

Поэтому, когда я выполняю это, на короткое время появляется сообщение «данные не найдены», а затем заменяется результатами по умолчанию.

function getImages(/* parameters ... */) {
    // other code...
    // if no results:
    $('div#imageLightBox ul.thumbList').append('<li>Sorry, no images found. <a href="#" id="clearSearchLink">Clear search</a>.</li>');
    $('a#clearSearchLink').click(new function() {
        alert("clearSearchLink");
        // code that resets the search parameters ...
        getImages('', '', $('#lightBoxPageSize').val(), 1); // <-- calls the function that contains this code.
    });
};

1 Ответ

3 голосов
/ 01 октября 2009

клик (новая функция () {

Просто "функция".

Это выражение функции , а не конструктор; 'new Function ()' с большой буквы F - это явная версия конструктора , которую вы обычно не хотите использовать, поскольку она принимает и оценивает строковый аргумент при каждом вызове, что довольно отвратительно (и медленнее) .

Происходит следующее: выражение функции создает новую функцию, затем оператор «new» вызывает ее для вновь созданного объекта как this (что на самом деле new делает).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...