it-source

jQuery를 사용하여 한 부모에서 다른 부모로 자식 요소를 이동하는 방법

criticalcode 2023. 8. 4. 23:07
반응형

jQuery를 사용하여 한 부모에서 다른 부모로 자식 요소를 이동하는 방법

저는 jQuery DataTables 플러그인을 사용하고 있습니다.등록된 Javascript 동작을 잃지 않고 드롭다운(.dataTables_length)을 표시할 검색 상자(.dataTables_filter)와 레코드 수(.dataTables_length)를 상위 요소(.dataTables_wrapper)에서 내 페이지의 다른 div로 이동하고 싶습니다.예를 들어, 검색 상자에는 '키업' 이벤트에 첨부된 기능이 있는데, 나는 그것을 그대로 유지하고 싶습니다.

DOM은 다음과 같습니다.

<body>
<div id="parent1">
  <div class="dataTables_wrapper" id="table1_wrapper">
    <div class="dataTables_length" id="table1_length">
      <select size="1" name="table1_length">
        <option value="10">10</option>
        <option value="25">25</option>
        <option value="50">50</option>
        <option value="100">100</option>
      </select>
    </div>
    <div class="dataTables_filter" id="table1_filter">
      <input type="text" class="search">
    </div>
    <table id="table1">
    ...
    </table>
  </div>
</div>
<div id="parent2">
  <ul>
    <li><a href="#">Link A</a></li>
    <li><a href="#">Link B</a></li>
    <li><a href="#">Link C</a></li>
  </ul>
</div>
</body>

다음은 이동 후 DOM의 모습입니다.

<body>
<div id="parent1">
  <div class="dataTables_wrapper" id="table1_wrapper">
    <table id="table1">
    ...
    </table>
  </div>
</div>
<div id="parent2">
  <div class="dataTables_filter" id="table1_filter">
    <input type="text" class="search">
  </div>
  <div class="dataTables_length" id="table1_length">
    <select size="1" name="table1_length">
      <option value="10">10</option>
      <option value="25">25</option>
      <option value="50">50</option>
      <option value="100">100</option>
    </select>
  </div>
  <ul>
    <li><a href="#">Link A</a></li>
    <li><a href="#">Link B</a></li>
    <li><a href="#">Link C</a></li>
  </ul>
</div>
</body>

.append(), .appendTo(), .prepend() 및 .prependTo() 함수를 보고 있지만 실제로는 이것들에 대해 운이 없었습니다..parent() 및 .parent() 함수도 살펴보았지만 실행 가능한 솔루션을 코딩할 수 없습니다.저는 또한 요소들이 절대적으로 위치하도록 CSS를 변경하는 것을 고려했습니다. 하지만 솔직히 말해서, 페이지는 유동적인 요소들로 구성되어 있고, 저는 이 요소들이 그들의 새로운 부모님들에게 떠 있기를 바랍니다.

이것에 대한 어떠한 도움도 매우 감사합니다.

제이지의 답변은 이벤트 핸들러와 데이터를 포함한 요소를 완전히 제거하기 때문에, 분리 기능 덕분에 그렇게 하지 않는 간단한 솔루션을 추가합니다.

var element = $('#childNode').detach();
$('#parentNode').append(element);

편집:

Igor Mukhin은 아래 댓글에서 더 짧은 버전을 제안했습니다.

$("#childNode").detach().appendTo("#parentNode");

Detach불필요합니다.

답은 간단합니다(2013년 기준).

$('#parentNode').append($('#childNode'));

http://api.jquery.com/append/ 에 따르면

페이지에서 요소를 선택하고 다른 요소에 삽입할 수도 있습니다.

$('.h2').

이 방법으로 선택한 요소가 DOM의 다른 한 위치에 삽입되면 해당 요소는 복제되지 않은 대상으로 이동됩니다.

$('#parent2').prepend($('#table1_length')).prepend($('#table1_filter'));

당신한테 안 먹히나요?제 생각엔...

제공된 답변을 바탕으로 다음을 수행하기 위해 빠른 플러그인을 만들기로 결정했습니다.

(function($){
    $.fn.moveTo = function(selector){
        return this.each(function(){
            var cl = $(this).clone();
            $(cl).appendTo(selector);
            $(this).remove();
        });
    };
})(jQuery);

용도:

$('#nodeToMove').moveTo('#newParent');

언급URL : https://stackoverflow.com/questions/2596833/how-to-move-child-element-from-one-parent-to-another-using-jquery

반응형