2012-08-03 7 views
3

jQuery one() 메서드를 이벤트 처리기에서 사용하여 한 번 실행 취소 한 다음 등록을 취소합니다. 뭔가 같이 : jQuery one()이 다시 실행되도록 재설정하십시오.

$(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ }); 

은 다음 몇 가지 아약스는 (실제로, 닷넷 다시 게시) (재 로딩없이) 대부분의 페이지 재설정하고 다시 이벤트 처리기를 설정합니다. 다시 활성 상태가되도록 one() 이벤트 처리기를 다시 설정하는 방법이 있습니까? 수동 분명히,이 방법은 작동하지 않습니다를 다시 트리거 :

$(".main .resizeBar").trigger("mousedown"); 

답변

13

그냥

function mainMouseDownOne() { 
    $(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ }); 
} 

$(document).ready(function(){ 
    mainMouseDownOne(); 

    .ajax({ 
     ... 
     success: function() { 
      ... 
      mainMouseDownOne(); 
     } 
    }) 
}); 
2

내가 함수 호출 내부() 메소드 바인드 한 포장 추천하는 기능에 해당 코드를 포장, 페이지로드시 함수를 호출하고 (초기 이벤트 핸들러를 바인드) Ajax 호출 성공시 다시 호출 할 수 있습니다.

var bindEvents = function(){ 
    $(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ }); 
}; 

$(function(){ bindEvents(); }); // call the one() method on page load. 

$.post(pageURL, function(data){ 
    bindEvents(); // As an example, after some sort of Ajax or post-reset event. 
}); 
+0

분명히 누군가 내 작품을 제출하기 전에 매우 비슷한 (동일한) 반응을 게시했습니다. 여분을 유감스럽게 생각합니다. –

+0

걱정할 필요가 없습니다. 내가 처음으로 그의 것을 받아 들일 것이지만, 나는 당신의 대답에 감사 드린다. 나는 왜 $ (function() {bindEvents();}를 넣는 지 혼란 스럽다. 그냥 bindEvents() 대신; 그래도. – brentonstrine

+0

페이지로드시 초기 bindEvents() 함수를 호출하기 전에 DOM이 준비 될 때까지 기다렸으므로 ... 이벤트를 바인딩하기 전에로드 된 페이지 (HTML)를 확실히 원합니다. –

관련 문제