2013-11-19 3 views
0

У меня проблема с моим обработчиком jQuery. Кажется, он стреляет не один раз, когда я нажимаю на него. Я попытался использовать метод .unbind, но это нарушило мой другой jQuery. Почему это происходит? Я пытаюсь построить приложение калькулятора, и я хочу, чтобы числа при нажатии были перенесены в массив. Функция работает, она просто делает это слишком много раз. Вот мой javascript. Каждая кнопка - это div с реселективным классом, то есть кнопка «7» - одна.щелчок обработчик стрельбы несколько раз, unbind не работает

Вот код

$(document).ready(function(){ 
$("#hidden > div").mouseover(function(){ 
    $(this).css('background-color','red'); 
$("#hidden > div").mouseleave(function(){ 
    $(this).css('background-color','black'); 
$("div.seven").click(function(){ 
    primary.push(7); 
}); 
$("div.eight").click(function(){ 
    primary.push(8); 
}); 
$("div.nine").click(function(){ 
    primary.push(9); 
}); 
$("#.equals").click(function(){ 
alert(primary); 
}); 
}); 
}); 
}); 
</script> 

ответ

0

Потому что каждый раз, когда мышь входит в div внутри #hidden элемента регистрируемого обработчик нажмите/MouseLeave.

При нормальных обстоятельствах вы не должны регистрировать обработчик событий внутри одного.

Попробуйте

$(document).ready(function() { 
    var primary = []; 
    $("#hidden > div").mouseover(function() { 
     $(this).css('background-color', 'red'); 
    }); 
    $("#hidden > div").mouseleave(function() { 
     $(this).css('background-color', 'black'); 
    }); 
    $("div.seven").click(function() { 
     primary.push(7); 
    }); 
    $("div.eight").click(function() { 
     primary.push(8); 
    }); 
    $("div.nine").click(function() { 
     primary.push(9); 
    }); 
    $("#.equals").click(function() { 
     alert(primary); 
    }); 
}); 
+0

Спасибо, это работает отлично! – dandlezzz

Смежные вопросы