簡體   English   中英

jQuery click事件觸發多次

[英]jQuery click event triggers more than once

我正在做一個項目,其中包含用戶必須填寫的簡單表單,然后單擊按鈕提交。 第一次單擊該按鈕時,事件(由.click()調用)正確發生,但是第二次該事件發生兩次,依此類推..如果我提交了100次表單,它將事件100次。

function MenuOpinion(){
$("#registraropinion").click(IngresarOpinion);
}

function IngresarOpinion(){ 
var seleccionada= $("#perpelicula option:selected").html();
if(seleccionada=="Seleccione"){
    $("#error_opinion").html("Seleccione una película de la lista");
}else{
    $("#error_opinion").html("");
    var nuevaOpinion=[];
    nuevaOpinion['nombre']=$("#pernombre").val();
    nuevaOpinion['edad']=$("#peredad").val();
    nuevaOpinion['opinion']=$("#peropinion").val();
    nuevaOpinion['puntaje']= parseInt($("#puntaje option:selected").html());
    nuevaOpinion['aclaracion']=$("#txtaclaracion").val();
    for(var i=0; i<listaPeliculas.length; i++){
        if(listaPeliculas[i]['titulo']==seleccionada){
            listaPeliculas[i]['opiniones'].push(nuevaOpinion);
        }
    }
    /*Aviso al usuario y vuelvo al inicio*/
    alert("Opinión guardada");
    $("#opinion").hide();
    $("#inicio").show();
}
}

我真的找不到問題。 我留下與此按鈕有關的代碼。

更改

function MenuOpinion(){
$("#registraropinion").click(IngresarOpinion);
}

$(function(){ // <-- on document ready
   $("#registraropinion").click(IngresarOpinion); // <-- bind the click event once on dom ready
}}

我的猜測是您正在每個提交上運行MenuOpinion()-導致它將另一個單擊處理程序綁定到您的元素-因此第100次單擊將觸發綁定到您元素的所有100個單擊事件處理程序

如果您使用的是表單和提交按鈕,則應使用

$(function(){ //<-- on document ready
   $(yourform).submit(IngresarOpinion); // <-- bind the click event
}}

然后在函數內部有一個e.preventDefault

function IngresarOpinion(e){
     e.preventDefault();
     // rest of your code
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM