우리는 우리 사이트의 몇몇 js 파일에 포함 된 "유틸리티"js 함수를 가지고있어서 코드 반복을 줄이기 위해 유틸리티 파일로 이동하고 모든 js를 수정했습니다 파일을 getScript
과 함께 사용하기 전에로드하십시오. 이것은 대부분의 경우에 효과가 있었지만 라이브 쿼리를 사용하는 코드 한 장으로 인해 오류가 발생했습니다.livequery가있는 getScript - 비동기 실행 결과가 내 결과를 던졌습니다.
우리는 새로운 기능을 사용할 필요가 어디에 내가 성공적으로 사용하고 코드 :
$.getScript("js/utilities.js", function(){
... use parseQueryString function ....
});
코드를 전 :
$('.preview')
.livequery(function(){
$(this).attr('rel','myPage.cfm?' + parseQueryString($(this).attr('rel')));
});
기본적으로
, "미리보기의 클래스마다 요소 "장면에 나타나면 rel 속성을 구문 분석하고 새로 파싱 한 문자열로 바꾸려고합니다.
코드 후 :
$('.preview')
.livequery(function(){
var preview = $(this);
// load utilities.js so that we can access the parseQueryString function
$.getScript("js/utilities.js", function(){
preview.attr('rel','myPage.cfm?' + parseQueryString(preview.attr('rel')));
});
})
문제이며, 이것은 getScript
호출의 콜백을 실행하기 전에 $('.preview').livequery
루프의 다음 반복으로 계속 될 것으로 보인다. 따라서 preview
변수는 rel 속성을 적절한 값으로 대체하기 전에 재설정됩니다. 어떻게 이것을 올바르게 실행할 수 있습니까?
다소 좋지만, 콜백에 동봉되어 있고 루프가 완료되면 일치하는 요소를 동적으로 추가하면 liveQuery가 제대로 작동하는지 확신 할 수 없습니다. –