Pregunta

Tengo el siguiente código

$("#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;
});

y un enlace con id="logoutLink"

preventDefault no funciona la primera vez porque el sistema de inicio de sesión no actualiza el enlace y agrega contenido html con enlaces, en el cual está el enlace de cierre de sesión y por lo tanto el elemento no existe en html, sé que este es el problema, pero Mi pregunta es ¿cómo puedo hacerle saber que se ha agregado contenido html con el ID del enlace logoutLink sin actualizar la página?

¿Fue útil?

Solución

Su pregunta no está clara, pero si agrega el enlace dinámicamente, debería usar cualquiera de los dos .live('click', ...), o el nuevo jQuery 1.7 .on().

Otros consejos

Su pregunta es un poco confusa, pero intente usar live() para unir su manejador de eventos:

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

Consulte http://api.jquery.com/live/ Para obtener más información.

necesitas agregar el controlador de clic $("#logoutLink").click(function(event) {} solo después de que el sistema de inicio de sesión agregue los enlaces, entonces haría lo siguiente

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

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

entonces también llama addHandlers(); cuando se agregan los enlaces

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top