2012-10-18 4 views
1

다음 코드가 발생했습니다. 모든 것이 잘 작동하는 것처럼 보입니다. 그러나 몇 번이나, 확인 및 경고 알림이 여러 번 나타나고 지나치게 귀찮아지는 경우가 있습니다. 다음 코드에 문제가 있습니까? 어떤 조언을 주셔서 감사합니다.이 jquery 문에 문제가 있습니까?

$('.order_stateselect').hover(function(){ 
     var value_text=$(this).find(":selected").text(); 
     var value_code=$(this).find(":selected").val(); 
     $(this).change(function(){ 
      if(confirm('Confirm Order Status Change?')){ 
       var conduct_status_chge=$.post('/seller/helpers/order_status_change.php',{order_item_id:$(this).parent('td').siblings('.order_item_id').text(),order_item_status:$(this).find(':selected').val()},function(data){ 
        alert(data); 
       }) 
       .error(function() { 
        $(this).find(':selected').removeAttr('selected'); 
        $(this).find('option:contains(value_code)').attr('selected','selected'); 
        alert('error'); 

       }); 
      }else{ 
       $(this).find(':selected').removeAttr('selected'); 
       $(this).find('option:contains(value_code)').attr('selected','selected'); 
      } 
     }); 
    }); 

여기에서 내가하는 일에 대한 간략한 설명.

여러 옵션이있는 선택 상자입니다. 이 선택 상자는 항목 목록의 표 셀의 일부입니다.

즉 : 각 행에 항목이 있고 각 행에 대해 해당 특정 행 전용의 선택 상자가 있음을 의미합니다.

1) 마우스를 가져 가면 페이지가로드 될 때 데이터베이스 값을 통해로드 된 선택한 옵션의 값이 표시됩니다.

2) 사용자가 선택 상자에서 다른 값을 선택하고 선택을 확인하면 $ .post를 수행합니다.

3) 사용자가 취소 키를 누르거나 $ .post가 실패하는 스크립트 호출에 오류가있는 경우 선택한 옵션을 데이터베이스의 원래 값으로 되돌립니다.

설명이 불분명하지만 미안하지만 더 이상 정보가 필요하면 알려 주시기 바랍니다. 감사.

+0

을 나는 문제는 당신이 '가져가'여러 번 '.order_stateselect'에 이벤트를 할당하는 것이라고 생각합니다. 그리고 왜 '호버'가 필요할까요? 'change'이벤트에 모든 코드를 넣으십시오. – NikitaBaksalyar

답변

3

난 당신의 코드에서 작은 발췌 할게요 : 당신은 변경 처리기를 부착하고

$('.order_stateselect').hover(function(){ 
    var value_text=$(this).find(":selected").text(); 
    var value_code=$(this).find(":selected").val(); 
    $(this).change(function(){ 

을 마우스 커서가 영역에 진입 할 때; 이런 일이 여러 번 발생하면 변경 핸들러도 여러 번 적용됩니다.

당신은 .hover().change(...) 외부 이동해야합니다 :

$('.order_stateselect') 
    .hover(function() { ... }) 
    .change(function() { ... }) 
+0

흠. 이것은 작동하지 않을 수 있습니다, 만약 내가 둘 다 분리했다, 나는 원래의 가치로 되돌릴 수 없을 것입니다. value_text와 value_code 둘 다 필요한 값을 얻을 수 없으므로 쓸모 없게 렌더링됩니다. – Lawrence

+0

@Lawrence 쉽게,'.data()'를 사용하여 이전 선택된 값을 추가하십시오; '.change()'안에는 사용자가 확인한 값을 참조하고 업데이트 할 수 있습니다. –

관련 문제