jQuery предотвращает дефолт () не работает при первом клике - PullRequest
0 голосов
/ 10 марта 2012

У меня есть следующий код

$("#logoutLink").click(function(event) {

    event.preventDefault();

    var dataString = "action=confirm";

    $.ajax({
        type: "POST",
        url: "requests.php",
        data: dataString,
        success: function(msg) {
            if (msg == "success") {
               alert('logged out');
            } else {
                showNotification("error", "" + msg + "");
            }
        },
        error: function() {
            showNotification("error", "Could not log you out at this time, try again.");
        }
    });

    return false;
});

и ссылка с id = "logoutLink"

protectDefault не работает в первый раз, потому что система входа в систему не обновляет ссылку и добавляет HTML-контент со ссылками, в котором есть ссылка для выхода из системы, и, следовательно, элемент не существует в HTML, я знаю, что это проблема, но мой вопрос в том, как мне узнать, что HTML-контент был добавлен с идентификатором ссылки logoutLink без обновления страницы?

Ответы [ 3 ]

3 голосов
/ 10 марта 2012

Ваш вопрос немного сбивает с толку, но попробуйте использовать live() для привязки вашего обработчика событий:

$("#logoutLink").live('click', function(event) {
    // ...

См. http://api.jquery.com/live/ для получения дополнительной информации.

2 голосов
/ 10 марта 2012

Ваш вопрос не ясен, но если вы добавляете ссылку динамически, вы должны использовать либо .live('click', ...), либо новый jQuery 1.7 .on().

0 голосов
/ 10 марта 2012

вам нужно добавить обработчик кликов $("#logoutLink").click(function(event) {} только после того, как система входа добавит ссылки, поэтому я сделаю следующее

function addHandlers(){
    $("#logoutLink").click(function(event) {
         event.preventDefault();
         // anything else
    }
}

$(document).ready(function(){
    addHandlers();
});

, затем также вызову addHandlers(); при добавлении ссылок

...