2014-02-11 4 views
0

요소를 롤오버했을 때 (그 요소가 포함 된 전체 데이터를 볼 때) 미리보기를 얻으 려하고 모든 것을 롤백했을 때 그대로 돌아옵니다. 문제는 마우스 커서를 빠르게 움직여 가끔 mouseout 메서드가 실행되지 않고 데이터가 업데이트 된 상태로 유지되는 경우입니다. 내가 어떻게 이럴 수 있니?jquery mouseover and mouseout bug

$(document).on("mouseover", ".checkRezolvata", function(e){ 
var idTemp = ""; 
idTemp = $(this).parent().parent().parent().attr("id"); 
data = { 
id: idTemp, 
set: 1 } 

$.ajax({ 
    type: "POST", 
    url: "crm/setRezolvataTemp.php", 
    data: data, 
    async: false, 
    success: function(data){ 
    if(data == 1) { 
     getStats(); 
     getTarget();        
    } else 
    alert("Eroare la schimbarea starii crmului temp!"); 
    },error: function(){ 
    alert("eroare"); 
    } 
});    
}); 

$(document).on("mouseout", ".checkRezolvata", function(){ 
var idTemp = ""; 
idTemp = $(this).parent().parent().parent().attr("id"); 
data = { 
id: idTemp,set: 0} 

$.ajax({ 
type: "POST", 
url: "crm/setRezolvataTemp.php", 
data: data, 
async: false, 
success: function(data){ 
    if(data == 1) { 
    getStats(); 
     getTarget();        
} else 
alert("Eroare la schimbarea starii crmului temp!"); 
},error: function(){ 
alert("eroare"); 
} 
});    
});  
+1

'mouseenter/mouseleave'를 대신 사용 하시겠습니까?! –

+0

mousetner/mouseleave에서도 동일한 문제가 발생합니다. – arrd

+0

문제를 복제하는 jsfiddle을 제공하십시오. –

답변

1

당신은 jQuery를에 mouseentermouseleave 이벤트 핸들러를 시도 할 수 있습니다. mouseovermouseout 매우 자주 까다로울이며, 참조 :

http://api.jquery.com/mouseenter/

http://api.jquery.com/mouseleave/

mouseenter 이벤트는 이벤트 버블 링을 처리하는 방식에 마우스 오버와 다르다. 이 예제에서 mouseover가 사용 된 경우 마우스 포인터가 Inner 요소 위로 이동하면 핸들러가 트리거됩니다. 이는 일반적으로 바람직하지 않은 동작입니다. 반면에 mouseenter 이벤트는 마우스가 바인딩 된 요소로 들어갈 때 자식 핸들러를 트리거합니다. 자식 요소는 바인딩되지 않습니다. 따라서이 예제에서는 마우스가 Outer 요소에는 입력되지만 Inner 요소에는 입력되지 않으면 핸들러가 트리거됩니다.

관련 문제