2009-08-28 6 views
0

Ajax를 통해 컨텐츠를로드 한 다음 $ ('. my_content_class')와 같은 요소가 있고이 $ ('. my_content_class')와 같은 데이터를로드합니다. load (url); ,하지만 어떻게로드 된 새로운 콘텐츠 내부의 모든 요소를 ​​.my_content_class와 일치시킬 수 있습니까? 나는 시도했지만 전혀 작동하지 않았다.jQuery를 사용하여로드 된 Ajax 컨텐츠 내의 모든 링크를 선택하는 방법은 무엇입니까?

$('.my_content_class a').each(function() 
{ 
    doSomething($(this)); 
}); 

답변

1

실제로 다른 컨테이너

$('a', content_returned_from_ajax).each(function() { 
    //dostuff 
}); 
+1

I이 사용을하지만, 다른 답변은 너무 좋은 ... – newbie

0

이 경우 jQuery의 live() 함수를 사용해야합니다. 그것은 jQuery 1.3에서 추가되었습니다. 필요하다면

3

$('.my_content_class a')에로드 할 필요없이, 당신의 아약스의 콘텐츠에서 직접이 작업을 수행 할 수있는 것은 그것을 할 수있는 방법입니다. 아마도 콘텐츠가로드되기 전에 해당 기능을 실행해야합니다. AJAX는 비동기식으로 작업하므로 스크립트가 다음 코드 행으로 진행하기 전에 내용이로드 될 때까지 끝나지 않습니다. load 메서드 콜백에 ​​코드를 삽입해야 AJAX 요청이 완료된 후에 코드가 실행됩니다. AJAX는 작업을 완료하면 나는 문서 콜백 읽을 수있는에서

var url = 'http://example.com/test.html'; 
var data = {var1: foo, var2: bar}; 
$('.my_content_class').load(url, data, function() { 
    // this will be executed after the content was successfully loaded 
}); 

가 호출되고 나는 실제 내용이 DOM 트리에로드 된 후이 경우 확실하지 않다. 이 문제는 스스로 해결해야하며 이전에 완료된 경우 DOM을 업데이트 한 후 콜백 함수를 약간 지연시켜야 시작될 수 있습니다. setTimeout이 도움이 될지 모르지만 먼저 해당 부분이 필요한지 확인해야합니다.

+1

했다 자세한 답변은 +1. – rahul

3

당신은 정확히 로딩 완료를 알기 위해 load 함수의 콜백 매개 변수를 사용할 수 있습니다, 그리고 당신은 당신의 요소를 선택할 수 있습니다

$('.my_content_class').load(url, function() { 
    var anchors = $('a', this); // all loaded anchor elements 
}); 
관련 문제