[英]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.