2012-04-11 3 views
0

나는 mouseleave 함수에서 Ajax 요청을 트리거 할 수 있는지 궁금한가요? 나는 마우스가 li을 떠날 때 문자열 'Y'를 전송하여 데이터베이스에서 업데이트 할 수 있도록하고 싶습니다.jquery mouseleave ajax 요청

언제든지 가능합니까?

(function(){ 
    $('li#myId').mouseenter(function(){ 
    var y = 'Y'; 
    }).mouseleave(function(){ 

    $.ajax({ 
     type: 'POST', 
     url: 'update.php', 
     data: 'y='+y, 
     success: function(response){ 
     $('li.#myId').html(response); 
     } 

    }); 
    }); 

})();

+0

왜 안 되나요? 첫 번째 클로저 외부에서'var y'를 옮겨야합니다. 왜냐하면 그것이 로컬이기 때문입니다. – neoascetic

+1

그리고 물론 코드에 오류가 있습니다. '$ ('li # myId') -> $ ('li # myId')'및 심지어'$ ('li # myId') -> $ ('# myId')' – neoascetic

답변

0

물론, y을 데이터로 저장하십시오.

(function(){ 
    var postY = function (y) { 
     $.ajax({ 
      type: 'POST', 
      url: 'update.php', 
      data: 'y='+y, 
      success: function(response){ 
       $('#myId').html(response); 
      } 
     }); 
    }; 

    // li#myId using both a tag and id is unnecessary since id is unique 
    $('#myId').mouseenter(function(e){ 
     $(this).data('y', 'Y'); 
    }).mouseleave(function(e){ 
     postY($(this).data('y')); 
    }); 
})(); 
0

"y"변수를 함수 내에 선언하면 해당 함수에서만 사용할 수 있습니다. $ (document) .ready 함수 뒤에 선언하고 이벤트에서 변경해야합니다. mouseleave 이벤트가 발생하면 아약스를 통해 보낼 수 있습니다.

$(document).ready(function(){ 
    var y = 'Y' 
    $('li#myId').mouseenter(function(){ 
    // whatever you want to do here with "y" 
    }); 

    $('li#myId').mouseleave(function(){ 
    // ajax 
    }); 
}); 
+0

당신은 글로벌 그런 식으로 변수. 또한 코드를 분리하고,'$ (document) .ready' 함수를 부 풀리지 마십시오. – fredrik