2013-07-17 2 views
0

나는 장바구니에 올랐습니다. 항목을 장바구니에 추가 할 수 있도록 모든 설정을 완료했습니다 (여러 항목을 처리 할 수 ​​있음). 나는 카트에서 항목의 삭제를 처리하기 위해이 코드를 사용하고 있습니다 :때로는 페이지를 새로 고침하고 가끔 카트에서 삭제

$('.delete-button').click(function(ev) { 
      ev.stopPropagation(); 
      ev.preventDefault(); 
      idValue = $(this).parent().siblings(".name").attr('id'); 
      $.post("includes/delete-cart.php",{id:idValue}, 
      function(data){ 
       // Do something with returned data. 
      }, "json"); 
      $("#wrap-change-cart").load('includes/cart-sidebar.php',function(){ 
       $('#loading').hide(); 
      }); // Load change in cart. 
     }); 

h 제-cart.php 파일은 데이터베이스 (simpled MySQL의 쿼리)에서 항목을 삭제합니다. 문제는 삭제 버튼을 누르면 (태그), 때로는 삭제되지만 때로는 페이지를 새로 고칩니다 (태그 자체가 연결된 것처럼). 처음 두 줄의 코드에서 중지되어야한다고 생각합니다. 제안?

P. 나쁜 제목에 대한 사과는

+0

$ ('a.delete-button')을 추가해보십시오. –

+0

가치가 있지만 도움이되지 않았 음 – Andrew

+0

두 번째 샷은 .stopPropagation() 대신 .stopImmediatePropagation()이됩니다. –

답변

0

추가 연구에서 발견 한 내용은 요소가 라이브 (jQuery 등을 통해)로 생성되므로 클릭 이벤트가 추가되지 않아서 .on()을 사용하여 전환했습니다. 코드 :

$('#wrap-change-cart').on('click', 'a.delete-button', function (ev) { 

이제는 가끔씩 나오지는 않지만 페이지 새로 고침이 발생하지 않습니다. 그래도 전에보다 더

+0

그래서 데이터베이스의 값을 변경하면 새 값을 다시 가져올 수있을만큼 빠르게받지 못하는 것이 문제였습니다. 새 값을 가져 오기 전에 지연이 필요했습니다. – Andrew

+0

다른 문제는 새로 고침 전에 데이터베이스가 충분히 빨리 작성되지 않았기 때문에 지연을 추가했기 때문입니다. – Andrew

0

이 같은 입력 태그와 같은 버튼 설정이있는 경우 :

<input type="submit" onclick="return deleteCart()" name="delete" value="delete" /> 

만큼 :

<input type="submit" name="delete" value="delete" /> 

당신은 온 클릭이 아닌 jQuery를 클릭 이벤트 처리기를 추가 할 수 있습니다 deleteCart() 함수가 true를 반환하는지 확인하면 페이지가 다시로드되지 않아야합니다.

희망이 도움이됩니다.

+0

흠, 재미있는 생각, 작동하지 않는 것.이게 작동하지만 .stopPropagation과 .preventDefault를 사용하면 이상하게 보입니다. – Andrew

+0

솔루션이 인라인 js입니까? –

+0

예 기술적으로 가장 선호되는 방법은 아니지만 jQuery를 사용할 수 없을 때 나를 위해 여러 번 작업했습니다. – anglinb

관련 문제