2010-11-27 2 views
0

$ element.remove()를 사용하려고하면 요소가 아직 dom 안에 있지 않기 때문에 작동하지 않습니다. 나는 $ element.html ("")을 사용하려고 시도했지만 내부 html 만 제거합니다. 전체 대상을 지우고 싶습니다.JQuery 문제 제거

편집

그때 그 위에 element.remove()를 할 수 있기 때문에 요소가 도움이 될 DOM에 추가됩니다 때 나에게 알려주는 이벤트입니다.

편집 확인이

문제에 대한 좀 더 많은 정보를 제공합니다. 나는 2 개의 sortable리스트를 가지고있다. (여러 이유로 연결되어 있지 않다.) 그리고 나는이 두 개의 sortable리스트 사이에서 요소를 이동시키는 함수를 추가했다. 그러나 direclty는 다른 목록에 요소를 추가 한 후 IE를 원래 목록으로 다시 이동합니다.

그래서 나는 항목을 (이동하는 대신) 다른 목록으로 복사하고 이전 항목을 제거한다고 생각했습니다. 그러나 요소가 메모리에 있기 때문에 원래 목록에 다시 추가됩니다.

그래서 엘리먼트를 지우면 (""로 바꾼다) 원래의리스트에 다시 추가되면 그냥 비어있는 문자열이기 때문에 그것을 모으지 않는다고 생각한 것이다.

아마도이 문제에 대한 더 나은 해결책이 있습니까? 제안?

+2

DOM에 없으면 왜 지울 필요가 있습니까? –

+0

IE가 DOM에 요소를 추가 할 때 속도가 느리기 때문입니다. Firefox에서는 모두 예상대로 작동합니다. – Andreas

+0

hold ... 당신은 $ element.html ("")이 요소의 내부 HTML을 제거한다는 것을 말하고 있습니다. 즉, 이미 DOM에 있음을 의미합니다. 문제는 그것이 어디에 있는지를 확실히 확신하고 있습니까? ? –

답변

0

좋아, 내가 한 것은 attr ("remove", "true")으로 항목을 표시하고 새 항목을 삭제할 때 내 요소를 통과하고 제거해야하는 사용자를 제거하는 스크립트를 작성하는 것이 었습니다. 이상적인 솔루션은 아니지만 작동합니다.

1

필요한 것을 말하기가 어렵지만 the .not() method을 찾고 계십니까? 전달하는 선택자 또는 요소와 일치하는 모든 요소를 ​​필터링합니다 (최상위 수준에서).

var str = '<div>a div</div>\ 
     <span>a span</span>\ 
     <p>a paragraph</p>'; 

var $obj = $(str); 

// remove the span before appending 
$obj.not('span').appendTo('body'); 


편집 : 아래에 코멘트에서

, 당신이 하고자하지만 서버에서 오는 요소의 렌더링을 방지로 보인다. 이것은 자바 스크립트로는 불가능합니다. Javascript는 DOM 요소로 파싱 된 요소 만 조작 할 수 있습니다. 즉, 자바 스크립트가 조작 할 기회가 생기면 이미 표시되었습니다.

상황에 따라 서버 측에서 처리 할 수 ​​없다면 요소 CSS를 display:none으로 설정할 수 있습니다. 이것은 파싱되지 않도록하지만, 페이지에 그려지는 것을 방지합니다.

+0

$ ("div")로 요소를 얻으면이 요소를 지우고 싶습니다. 그래서 "

"은 ""로 바뀝니다. – Andreas

+0

@ Andreas - 페이지에 렌더링되지 않도록 사이트에 올 때 캡처하려고한다고 말하면 javascript로 처리 할 수 ​​없습니다. Javascript는 도착하고로드/파싱 된 요소에서만 유용합니다. 그래서 당신은'.remove()'를 사용할 수 있지만 그 요소가 존재할 때까지는 사용할 수 없다. 이러한 종류의 수정 작업은 서버 측에서 수행해야합니다. – user113716

0

아마도 .remove().empty()을 혼동하고 있을까요?

DOM에 물건을 추가 할 때 IE가 느려지는 것과 관련하여 네가 사용하고있는 것은 모든 것을 한 번에 추가하여 속도를 높이는 유용한 기술입니다.

 
$box = $('#thebox').remove().empty(); 
$box.append(...); 
$box.append(...); 
$box.append(...); 
... 
$box.append(...); 
$('#theparentofthebox').append($box); 

여기에서 .remove()는 DOM에서 요소를 분리 더처럼 작동합니다.

+0

예, 초기 문제였습니다. 나는 remove()가 객체를 null 또는 equalent로 바꾸었고 그 이후에 dom에 추가 될 수 없다고 생각했다. 이름은 "제거"보다는 "분리"되어야합니다. – Andreas