parece una cuestión sencilla, pero las soluciones para el otro problema no parecen funcionar de mí.

Tratando de provocar una petición AJAX a partir de un clic de botón, pero no parece ser de disparo.

ejemplo de HTML

<button class="remove_weight_button" id="15">x</button>

javascript

$(".remove_weight_button").click(function(){
    var button_id = $(this).attr("id");
    $.ajax({
        type: "POST",
        url: "weight_tracker_process.php",
        data: {
            weight_id: button_id,
            action: "remove"
        },
        success: function(){
            getWeightData();
        },
        error: function(){
            alert("data removal error");
        }
    });
    return false;
});
  • Lo primero es lo primero, ¿ves algún error en la consola?, es llegar el controlador (si no es que es envuelto en el documento.listo), ¿ves algún error de js o error de red en la consola?
  • Está usted seguro de que el código javascript se ejecuta después de que el botón es cargado? Eso es un error común.
  • intente agregar una impedir por defecto en la parte superior de su función
InformationsquelleAutor GrepGrep | 2013-10-08

1 Comentario

  1. 102

    El código funciona bien en el violín. Es su botón dinámico prestados a través de AJAX después de la carga de la página inicial?

    Uso

    $(document).on("click", ".remove_weight_button", function(){

    lugar de

    $(".remove_weight_button").click(function(){
    • +1, yo no sabía acerca de $(document).on. Nuevo truco!
    • ah, por supuesto, sí tienes razón es que se carga por ajax. ¿Cómo funciona el anterior solucionar este problema?
    • El «.haga clic en» caso de que usted está usando sólo busca elementos que fueron emitidos durante la carga de la página inicial. El «sobre» el evento busca elementos en el estado actual de la página
    • Gracias por lo que tiene sentido, el código funciona perfecto
    • Alternativamente $(".remove_weight_button").live("click", function() { ... si la página se carga de forma dinámica y usted está usando un mayores de la versión de jQuery. La clave es la click no se da cuenta dinámicamente cargado de elementos del DOM como usted menciona.
    • su explicación es realmente incorrecto. Es posible que desee leer en evento delegación. Este código funciona precisamente gracias al selector de argumento (el segundo argumento en el método). Usted puede crear fácilmente un ejemplo que demuestra su explicación incorrecta: $(«.remove_weight_button»).en( «click», function(){…}) . El método NO está mirando «para los elementos en el estado actual de la página,» como se dijo. El caso es que acaba de ser designada en el documento y, a continuación, ‘delegado’ para el selector «.remove_weight_button» elemento».
    • Esta solución me salvó .. yo estaba tratando por 1 hora a fuego sólo un evento con JQuery y no podía hacerlo.
    • Usted está confundido acerca de la relación padre / hijo. El document es el elemento principal en el ejemplo anterior. Podría ser cualquier elemento que es la encapsulación de .remove_weight_button.
    • Entiendo que el documento es el elemento principal en el ejemplo. Su explicación en el comentario que está mal, como he señalado. Usted específicamente en el estado de El «sobre» el evento busca elementos en el estado actual de la página. Esto es simplemente no es cierto, y podría inducir a error a los desarrolladores. El «sobre» la función no tiene nada que ver con los elementos en el estado actual de la página, el delegación/selector argumento ".remove_weight_button" (segundo argumento) lo hace, tal como he señalado. El hecho de que el click función no toma el delegación argumento es la verdadera razón por la que tiene que utilizar on.
    • Esta es una encapsulación de la lógica, de modo que es más fácil para la gente a entender. Transmitir un mensaje de forma correcta, es mucho más importante que copiar y pegar el texto desde el sitio web de jQuery y tratando de demostrar que usted sabe lo que está haciendo se basa solamente en
    • Esta solución me salvó demasiado. Pasado cerca de 2 horas, pero finalmente, con este pequeño fragmento de código que fue capaz de lograr lo que yo quería como mi lista de puntos de forma dinámica se representa mediante llamadas ajax.
    • Gracias, me encontré con un problema similar

Dejar respuesta

Please enter your comment!
Please enter your name here