2013-03-26 4 views
1

내가 왜 작동하지 않을지 모르겠다. 링크를 확인하고 3 명의 손님을 추가 한 다음 카운터를 제거하면 정신이 바뀐다.Jquery Increment Down Click

http://www.waterfrontexeter.co.uk/preordernew/

var count = 1; 
    $(".removeOrder").on('click', function(){ 

       count--; 
       $("#counter").html("Total Number of Guest: " + count); 
       $("input[id=totalguest]").val("Total Number of Guest: " + count); 

     }); 

이 내 코드는 모든 것이 내가 생각하는 좋은 모습, 지금까지입니까? 나는 이것의 반전을 시도하고 그것은 잘 추가했습니다.

답변

1

제 생각에 문제는 웹 사이트의 js 코드가 잘 구성되어 있지 않다는 것입니다. 더 나은, 당신이 직접 문자열을 쓸 수 있습니다

... 
count = $(".duplicate").length; 
... 

또는, 그리고 변수에 카운터를 저장하지 않는 : 오류의 종류를 탈출하기 위해, 난 당신이 더 유연한 방법으로 그것을하는 것이 좋습니다

var strCount = ''; 
... 
strCount = "Total Number of Guest: " + $(".duplicate").length; 
$("#counter").html(strCount); 
$("input[id=totalguest]").val(strCount); 
당신이 할 겁니다
+0

죄송 중복 비트 수와는 아무 상관없는 ... 위임 된 이벤트에 클릭 핸들러를 이동해야 .removeOrder – Brent

1

하나의 문제는 당신이이 프로그램을 실행할 때, 당신은 추가 할 많이 일어나고 당신이 추가 게스트 버튼을 클릭 할 때마다 ...

$(".add").click(function() { 
    $(".removeOrder").on('click', function(){ 
     $(this).parents(".duplicate").remove(); 
     count--; 
     $("#counter").html("Total Number of Guest: " + count); 
     $("input[id=totalguest]").val("Total Number of Guest: " + count); 
    }); 
}); 

새로운 클릭 처리기를 만드는 것입니다 여분의 클릭 수 h andlers.

일반적으로 이벤트 콜백 내부에는 클릭 핸들러를 추가하지 마십시오.

를 해결하려면, 당신은 누군가를 누르면 일단 내가 할 필요가 빼앗아입니다

$(document).on('click', '.removeOrder', function(){ 
    $(event.target).closest(".duplicate").remove(); 
    count--; 
    $("#counter").html("Total Number of Guest: " + count); 
    $("input[id=totalguest]").val("Total Number of Guest: " + count); 
}); 
+1

두 가지 솔루션이 모두 작동하지만 먼저 netme를 시도했습니다. 죄송합니다 : ( – Brent

+0

하하, 걱정하지 마시고 다행입니다. – jcreamer898

+1

어느 쪽이든, 여전히 콜백 함수에 클릭 핸들러를 두지 않으려 고 노력하십시오. – jcreamer898