내가 elment하는 이벤트를 핸들러를 클릭 추가 완료기다립니다
$(".elem").click(function(){
$.post("page.php".function(){
//code1
})
})
그리고 트리거 클릭 이벤트 내가 코드 1이
내가 elment하는 이벤트를 핸들러를 클릭 추가 완료기다립니다
$(".elem").click(function(){
$.post("page.php".function(){
//code1
})
})
그리고 트리거 클릭 이벤트 내가 코드 1이
(무시 실행 후 CODE2 실행되었는지 확인하는 방법
$(".elem").click();
//code2
WebWorkers) JavaScript는 단일 스레드에서 실행되므로 code2가 항상 code1 이후에 실행되는지 확인할 수 있습니다. 당신의 코드 1이 트리거 클릭 핸들러가 완료되는 경우 Ajax 호출 또는 setTimeout()
, 같은 것을 비동기 작업을 수행하지 않는 한
후 CODE2는 Ajax 호출에서 (결국) 한 후, 콜백을 실행 (또는 setTimeout()
, 또는 것 뭐든간에) 실행됩니다.
편집 : 업데이트 된 질문 내가 비동기 위에서 말했듯이 아약스 콜백 나중에 일어날 것이기 때문에, CODE2 항상 코드 1 전에 실행됩니다에 대한은 (Ajax 응답이 매우 빠른 경우에도, 그것은 때까지 콜백을 호출하지 않습니다 현재 JS 완료). 매개 변수없이와 .click()
가 .trigger("click")
에 대한 바로 가기입니다 사용
"내가 코드 1이 실행 된 후에 CODE2 실행되었는지 확인하는 방법"하지만 실제로 .trigger()
를 호출하는 경우 명시 적으로 추가 매개 변수를 제공 할 수
그 핸들러로 전달되어 다음을 수행 할 수 있습니다.
$(".elem").click(function(e, callback) { $.post("page.php".function(){ //code1 if (typeof callback === "function") callback(); }); }); $(".elem").trigger("click", function() { // code 2 here });
즉, 클릭 핸들러 테스트 내에서 함수가
callback
매개 변수에 전달되었는지 여부와 그 경우 호출하십시오. 즉, 이벤트가 자연스럽게 발생하면 콜백이 없지만 프로그래밍 방식으로 트리거하고 함수를 전달하면 해당 함수가 실행됩니다. (.trigger()
과 같이 전달하는 매개 변수는 함수 일 필요는 없으며 모든 유형의 데이터 일 수 있으며 둘 이상의 매개 변수를 전달할 수 있지만이 목적을 위해 함수가 필요합니다. 자세한 내용은.trigger()
doco을 참조하십시오.)데모 : 발사하면서 트리거는 항상 실행됩니다,
$(".elem").live("click", function(){ //code1 })
나는 그것이 사실이라고 생각하지 않는다. 동시에 실행되지는 않지만, DOM API가 이벤트 핸들러가 호출되는 순서에 대해 어떤 보증도 제공하지 않는다고 저는 생각합니다. 한 브라우저의 한 버전에서 올바른 순서로 실행되는 경우에도 다른 경우에는 어떤 일이 발생하는지 보장 할 수 없습니다. –
예 아약스 전화가 있습니다. [질문 수정] –
사람들, OP 질문에만 단 하나의 이벤트 처리기가 있습니다. code2가 방아쇠를 당깁니다. – JJJ
당신은이 방법을 쓰기 시도 할 수 있습니다.
랩 code2
방법 등이 항상 code1
후 불려가는 code1
내부 콜백으로 추가가
code2 = function(){/*code2*/};
$(".elem").click(function(){
//code1
code2();
})
그 해결책이 아니야, 난 code2없이 다른 곳에서 클릭 이벤트를 실행하고 싶습니다 –
당신은 결코 재사용해야한다고 언급하지 않았습니다. 위의 내용은 저에게 좋은 해결책입니다. –
당신은 그것에 대해 아무 말도하지 않으 셨습니다. 나는 명확하지 않은 질문에 대해 아마도 하찮은 의견을 내려야 만합니다. 그러나 당신이 새로운 사람들이기 때문에 그렇게하지 않을 것입니다. @JonasGeiregat : 감사. – Gautam
자바 스크립트 실행 라인으로 라인 실행합니다. 그래서 어떤 일이 일어나든지, 먼저 처형 될 것입니다. 따라서 다른 방법보다 먼저 클릭 코드를 추가하면됩니다.
플러스 비동기 호출이 있으면 응답을받을 때만 설정되는 플래그를 취하십시오.
var clicked = false; $ ('# elem').클릭 (function() { // 일부 비동기 프로세스 수행 clicked = true; });
는 동안 속성에 비동기 = true로 설정 후 방법을 사용하는 경우,// 다른 기능은
를 호출 할 수 또는 두 번째 옵션이 될 것입니다 {// 아무것도 할} (! 클릭).while (! clicked) {}는 브라우저가 응답하지 않도록합니다. –
그리고 두 번째 옵션은 게시물 요청이 완료 될 때까지 동일한 작업을 수행합니다. –
"코드 1 실행"의 의미를 정의하십시오. 코드에는 ajax 메서드가 있습니다. 따라서 아약스 호출이 실행되거나 아약스가 실행되고 완료 될 때를 의미합니까? – Rahatur