2012-10-31 2 views
1

jQuery 선택기를 사용하여 동적으로 생성 된 요소를 가져 오려고하지만 빈 배열을 반환하고 있습니다.동적으로 생성 된 요소 뒤의 jQuery 선택자

내가 빈 사업부 잡아입니다 일을하고 가장 먼저하는 일 : 다음

var packDiv = document.getElementById('templates'); 
packDiv.innerHTML = ""; 

을 루프에 항목을 추가 : 루프 완료 후

packDiv.innerHTML = packDiv.innerHTML + "<img id='" + thumbName + "' src='thumbs/" + thumbName + "'/>"; 

내가 사용하여 항목을 선택하려고 :

console.log($("#"+thumbName)); 

빈 배열을 반환합니다. 내가 검색 한 모든 것들은 .on을 사용하고 있지만 모든 예제는 이벤트 핸들러를 설정하는 것으로 보여줍니다.

제 질문은 어떻게 동적으로 생성 된 요소의 선택기를 포맷합니까?

+1

모든 항목이 추가 된 후에'을 console.log (packDiv.innerHTML가)'무엇을 생산 하는가? –

+2

문제는 제공 한 스 니펫 외부에 있습니다. http://jsfiddle.net/pzz9A/ –

+0

@SalmanA 예상되는 데이터를 보여줍니다. –

답변

2

thumbName이 파일 이름 (예 : foo.jpg)이라고 가정하면 예상대로 jQuery에서 파싱되지 않습니다. .jpg 이름의 일부는 클래스 이름으로 처리되며 해당 요소에이 클래스 이름을 제공하지 않으므로 jQuery는 빈 배열을 반환합니다. 즉, 선택자와 일치하는 항목을 찾지 못합니다. id가 foo이고 클래스 이름이 jpg 인 요소를 검색하고 있습니다. 나는이 함께 갈 것

방법은이 라인을 따라 뭔가 :

var packDiv = $('#templates'); 
packDiv.empty(); 

//inside a loop 
packDiv.append("<img class='" + thumbName.replace(/\./g,'') + "' src='thumbs/" + thumbName + "'/>"); 

console.log($("."+thumbName.replace(/\./g,''))); 
+1

replace 함수의 모든 점과 일치시키는 정규식을 사용합니다 :'replace (/\./ g, '')' –

+0

고마워, 코드를 수정했다. 이전 버전은 찾은 첫 번째 점만 바꿉니다. – pckill

+0

전체 파일 이름이라는 것을 완전히 잊어 버렸습니다. jpg가 수업이라고 생각했습니다. 고맙습니다! –

관련 문제