2010-08-17 3 views
0

내가 저장 한 var에서 가져온 일부 HTML을 편집하고 싶습니다. 같은 : 반환 된 jQuery html() 콘텐츠로 HTML 편집

var testhtml = $('.agenda-rename').html(); 
console.log($('input',testhtml).attr('name')); 

는 또한

console.log($(testhtml).find('input').attr('name')); 

을 시도하지만 undefined를 얻을? 나는 그것이 $ .ajax, $ .get, $. post처럼 작동 할 것이라고 생각했다. 어떻게 그럴 수 있니?

답변

1

.html()으로 전화하면 .agenda-rename이 아닌 콘텐츠 만 수신하게됩니다. 따라서 input.agenda-rename의 직계 자녀 인 경우 .find()은 찾을 수 없습니다.

단지 .html() 호출하지 않고 할 아마 더 나은 :

var testhtml = $('.agenda-rename').clone(); // or .clone(true) 
console.log($('input',testhtml).attr('name')); 

는 이제 .agenda-rename 요소 (들)이 있고 그 안에 중첩/그 요소를 검색 할 수 있습니다.


편집 :는 의견을 바탕으로, 영업 이익은 원본을 수정하지 않습니다. 따라서 .clone()을 사용할 수 있습니다. 위의 답변은 변경 사항을 반영하도록 편집되었습니다.

보관해야하는 이벤트가 첨부 된 경우 .clone(true)을 사용하십시오.


편집 : 이유 $('input',testhtml)$(testhtml).find('input')이 같은 결과는 실제로 같은 일이 있다는 것입니다 제공합니다.

jQuery는 첫 번째 버전을 장면 뒤에서 두 번째 버전으로 변환합니다. 따라서 기술적으로는 첫 번째보다 두 번째를 사용하는 것이 더 효율적입니다.

다음은 jQuery가 전달한 내용을 확인하기 위해 다른 테스트를 실행 한 후 전환하는 코드입니다.

http://github.com/jquery/jquery/blob/master/src/core.js#L150

+0

못해이 $를 수정 ('. 의제 이름 바꾸기') 그러나? 나는 그것을 지키고 그것을 수정하지 않기를 원한다. 기본적으로 인라인 템플릿을 만들려고 노력 중이며 복제, 수정 한 다음이 모달 유형 인터페이스에 표시합니다. –

+0

@Oscar - 수정하고 싶지 않으면'.clone()'해야합니다. 보존하고 싶은 이벤트가 있으면,'.clone (true)'를 호출합니다. 나는 갱신 할 것이다. – user113716

+0

@patrick dw : 당신이 맞아요, 삭제 된 것 같아요. – Sarfraz

관련 문제