2011-01-01 8 views

답변

4

예, ajax:before은 최신 버전에서는 ajax:beforeSend이 아니지만 추가/트리거를 발생시키는 jQuery 이벤트입니다.

$(document).bind('ajaxSend', function(e, request, options) { 
    $('[data-once=true]').something(); 
}); 
+0

Nick :'ajaxSend'가'.live()'와 함께 작동하는지 확신합니까? 그것은 .bind()만으로 작동합니다 (뭔가를 놓치지 않았다는 것을 의미하지는 않습니다). – user113716

+0

@patrick - 어떤 버전의 jQuery를 사용하고 있습니까? 글로벌 이벤트는 다양한 버전에서 크게 변경되었습니다. –

+1

Nick : 1.4.4를 사용 중입니다. '.live()'를 사용하는 [예제가 있습니다.] (http://jsfiddle.net/LvExW/).'.bind()를 사용하여 [여기에 예제가 있습니다.] (http://jsfiddle.net/LvExW/1/))'. 두 가지 모두'성공 '에서 콘솔에 로그인하지만'bind' 버전 만'ajaxSend'에서 그렇게합니다. – user113716

1

'ajax:before'은 해당 이름으로 맞춤 이벤트를 정의하지 않는 한 .live()이 처리하는 데 유용한 이벤트는 아닙니다.

+0

왜 : jQuery를에 불구하고, 당신은 단지이처럼 ajaxSend global event 사용하여, 전 세계적으로이에 첨부 할 수 있습니다 (ajax:before JS 프레임 워크 무관 변경 레일을하기 전에 주변에)? 원격 폼을 동적으로로드하는 경우 리스너가 해당 폼을 작동하게 할 수도 있습니다. – crispy

+0

@duddle :이 대답을 올바른대로 downvote하지 마십시오. 이미 언급했듯이''ajax : before ''는 그 이름으로 커스텀 이벤트를 정의하지 않는 한'.live()'에 유용한 이벤트가 아닙니다. 특정 이벤트에서 특정 작업을 수행하는 것이 유용하지 않다고 말하는 것은 아닙니다. 나는'live()'**가 기본적으로 해당 이벤트를 인식하지 못한다고 말하고있다 **. 사용자 지정 이벤트를 수동으로 정의해야합니다. – user113716

+0

글쎄, live() *는이 이벤트를 레일스에서 ​​기본적으로 인식합니다. 레일스 컨텍스트를 존중하지 않고이 솔루션의 솔루 션을 제공하지 않고이 기술을 사용했기 때문에 귀하의 대답은별로 도움이되지 않습니다. – crispy

2

나는 레일 dev에 아니에요, 그래서이 방정식의 변화 레일 방법을 잘 모르겠지만, 일반 OLE 'JS 년 전에 AJAX에 기능을 첨부 할 것입니다 방법이 있습니다 :

$.ajax({ 
    beforeSend: function(){ 

    alert("Before"); 

    }, 
    complete: function(){ 

    alert("after"); 

    } 
}); 

이러한 이벤트는 이후 모든 AJAX 요청에 대해 발생합니다. 본질적으로 AJAX 객체를 구독하고 있습니다.

자세한 내용은 jQuery AJAX Events Documentation을 참조하십시오.

+0

일반 JS는 jQuery를 의미합니까? – grantwparks

관련 문제