2016-08-05 2 views
0

ajax로 요소의 데이터 속성을 변경하는 함수가 있습니다.ajax로 수정 된 속성을 얻는 방법은 무엇입니까?

다음 번에 동일한 요소의 수정 된 데이터 특성을 가져 오려고하지만 특성이 변경되었지만 이전 데이터 특성의 값을 얻었습니다.

그래서 내가 뭘 잘못하고 있니?

예 :

$(function(){ 
 
    $(".class1").on("click", function(){ 
 
    var attribute_data = $(this).data("attribute"); 
 
    $.ajax({ 
 
     ... // Handle 
 
     success:function(data){ 
 
      $(this).data("attribute") === "2"; 
 
     } 
 
    }); 
 
    }); 
 
    
 
    
 
    
 
    $(".class1").on("click",function(){ 
 
    var modified_attribute_data = $(this).data("attribute"); 
 
    console.log(modified_attribute_data); // will return "1" instead "2" 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="class1" data-attribute="1"> 
 
    Content 
 
</div>

+0

"onclick"과 같은 시간에 아약스는 콘솔이 호출 및 로그를 받기 전에 완료 할 수있는 기회를 얻지 못합니다. –

+0

좀 더 자세히 설명해 주시겠습니까? 지금 당신은 같은 요소'$ (".class1")'에 대한 두 개의 클릭 핸들러를 가지고 있습니까? – pmahomme

+0

Omg, 둘다 맞습니다 - 고마워요. 내 실수 야. 그러나 나는 방아쇠를 만드는 방법을 모른다. 내 상황에 대해 읽거나 여기에 글을 쓸 링크를 줄 수 있습니까? –

답변

0

당신이 할 경우 : 다음

$(".class1").on("dblclick", function(){ 
     $(this).hide(); 
     var attribute_data = $(this).data("attribute"); 
     $.ajax({ 
     ... // Handle 
     success:function(data){ 
     $(this).data("attribute") === "2"; 
     $(this).show(); 
     } 
    }); 
}); 

을 클릭 한 :

$(".class1").on("click",function(){ 
    var modified_attribute_data = $(this).data("attribute"); 
    console.log(modified_attribute_data); // will return "2" 
    }); 

내가 추천 자체 각 클래스를 트리거하는 이벤트를 parating하거나 클래스를 토글 링하는 것과 같이 어떤 것을 차단하는 ... 그리고 아약스는 비동기이므로 즉시 변경 될 것이라고 기대하지 마십시오.

관련 문제