2017-09-12 35 views
0

나는 원래 항목을 제거하려면이 기능을했다 :

$(document).on("click", ".delete-item", function() { 

        console.log("Removing "+$(this).data('id')); 
        var id=$(this).data('id'); 
        var parent=$(this).parent().parent().parent();  
        parent.remove(); 
        $(".subitem-row"+id).remove(); 
        applyCartChanges(); 

}); 

그것은 잘 작동합니다. 하지만 대화를 할 때 (OnsenUI와 폰갭을 사용하여)과 같이 제거하기 전에 먼저 확인 :

다음
$(document).on("click", ".delete-item", function() { 

     ons.notification.confirm({ 
      message: getTrans('Remove from cart?','remove_from_cart') ,  
      title: dialog_title_default , 
      buttonLabels: [ getTrans('Yes','yes') , getTrans('No','no') ], 
      animation: 'default', // or 'none' 
      primaryButtonIndex: 1, 
      cancelable: true, 
      callback: function(index) { 

       if (index==0){       

        console.log("Removing "+$(this).data('id')); 
        var id=$(this).data('id'); 
        var parent=$(this).parent().parent().parent();  
        parent.remove(); 
        $(".subitem-row"+id).remove(); 
        applyCartChanges(); 

       } 
      } 
     }); 

}); 

갑자기 더 이상 작동하지 않습니다 :(콘솔에서, 그것은을위한 undefined을 말한다 $(this).data('id'). 어떤 아이디어 왜?

+1

HTML 코드를 표시하십시오. 우리가 오류를 지적하기가 어렵다. –

+0

'$ (this) .attr ('data-id')'시도' – prasanth

+0

'this' 콜백 함수에 대한 참조가 누락되었습니다. 응답 –

답변

2

이것은 this에 대한 참조가 대화 상자 내부에 클릭 된 요소로 얻어지지 않고 있기 때문이다. 그래서, 내가 012의 참조를 촬영 한

$(document).on("click", ".delete-item", function() { 
     var _this = this; 
     ons.notification.confirm({ 
      message: getTrans('Remove from cart?','remove_from_cart') ,  
      title: dialog_title_default , 
      buttonLabels: [ getTrans('Yes','yes') , getTrans('No','no') ], 
      animation: 'default', // or 'none' 
      primaryButtonIndex: 1, 
      cancelable: true, 
      callback: function(index) { 

       if (index==0){       

        console.log("Removing "+$(_this).data('id')); 
        var id=$(_this).data('id'); 
        var parent=$(_this).parent().parent().parent();  
        parent.remove(); 
        $(".subitem-row"+id).remove(); 
        applyCartChanges(); 

       } 
      } 
     }); 

}); 

주의로 코드를 다시 작성 새 변수 _this 안에이 있으므로 대화 상자에서 액세스 할 수 있습니다.

+0

Ah! 나는 새로운 것을 배웠다, 고마워. 일단 당신이 몇 분 안에 나를 허락하면 대답을 받아 들일거야! – user1996496

+0

감사합니다. 기꺼이 도와 드리겠습니다. –

+0

답을 표시하는 것을 잊지 마십시오. –