jQuery에서 플러그인과 유사한 함수를 작성하여 AJAX가있는 컨테이너에 요소를 추가하려고합니다.AJAX를 통해 요소를 추가 한 후 캐시 된 jquery 객체를 업데이트하는 방법
$.fn.cacheload = function(index) {
var $this = $(this);
$.get("cache.php", {{ id: index }).done(function(data) {
// cache.php returns <div class='entry'>Content</div> ...
$(data).insertAfter($this.last());
});
}
나는이처럼 사용하고 싶습니다 : 그것은 다음과 같습니다
이var entries = $("div.entry"),
id = 28;
entries.cacheload(id);
이 다른 "항목"-container을로드하고 DOM에 추가 할 것이라고 생각.
이것은 지금까지 작동합니다. 물론 캐시 된 jQuery 객체 (entries
)를 보유하는 변수는 업데이트되지 않습니다. 따라서 시작 부분에 div가 두 개 있고이 함수가있는 div를 추가하면 DOM에 표시되지만 entries
은 여전히 원래 두 div 만 참조합니다.
AJAX 호출이 비동기이기 때문에 get의 반환 값을 사용할 수 없다는 것을 알고 있습니다. 하지만 AJAX를 통해로드 된 요소가 포함되도록 캐시 된 개체를 업데이트 할 수있는 방법이 있습니까?
$.get("cache.php", {{ id: num }).done(function(data) {
$(data).insertAfter($this.last());
entries = $("div.entry");
});
을하지만 내가 직접 캐시 된 오브젝트를 유지하는 변수를 참조 할 것 :
는 내가 삽입 한 후이 다시 쿼리처럼 할 수있는 알고있다. 주위에 어떤 방법이 있어도 기능 자체가 포함되어 있습니까? $(this)
을 재 할당하려고 시도했지만 오류가 발생했습니다. .add()
은 캐시 된 개체를 업데이트하지 않으므로 새로운 (임시) 개체를 만듭니다.
고맙습니다.
는 // UPDATE :
존 S 아래에 정말 좋은 대답을했다. 그러나, 나는 나를 위해 그것이 실제로 더 잘 작동 할 것이라는 것을 깨닫게되었다. 이제 플러그인 함수가 빈 요소를 동 기적으로 삽입하고 AJAX 호출이 완료되면 해당 요소의 특성이 업데이트됩니다. 또한 요소가 올바른 순서로로드되도록합니다. 여기에 걸려 넘어지면 JSFiddle이 있습니다. http://jsfiddle.net/JZsLt/2/
고마워요. 이것이 제가 찾고 있던 것입니다. 실제로 두 번째 예제는 가치가별로 없다고하더라도 나에게 매우 도움이됩니다. 'window resize'에서 캐시 된 객체에 대한 함수를 호출하므로 성능면에서 캐싱이 중요하며 실제 캐쉬가 무엇인지 나타내려면 캐쉬가 필요합니다. 또는 나는 무엇인가 여기에서 놓치 느냐? – pjupju
@pjupju - 나는 당신이 아무것도 놓치고 있다고 생각하지 않는다. 나는 당신이하고있는 일을 이해하고 있다고 생각하며,'entry '를 업데이트하는 것이 어떻게 당신에게 의미가 있는지 알 수 있습니다. –
다음은 [jsfiddle] (http://jsfiddle.net/d6psu/)입니다. –