Để quấn một yếu tố với bình luận, hay cụ thể hơn để thay thế một phần tử có nút nhận xét có HTML của phần tử đó:
my_element_jq = $('.my_element');
comment = document.createComment(my_element_jq.get(0).outerHTML);
my_element_jq.replaceWith(comment);
Để chuyển nó trở lại:
$(comment).replaceWith(comment.nodeValue);
Nếu bạn không có tham chiếu đến nút bình luận thì bạn cần phải đi qua cây DOM và kiểm tra nodeType
của mỗi nút. Nếu giá trị của nó là 8 thì đó là một chú thích.
Ví dụ:
<div id="foo">
<div>bar</div>
<!-- <div>hello world!</div> -->
<div>bar</div>
</div>
JavaScript:
// .contents() returns the children of each element in the set of matched elements,
// including text and comment nodes.
$("#foo").contents().each(function(index, node) {
if (node.nodeType == 8) {
// node is a comment
$(node).replaceWith(node.nodeValue);
}
});
Nó muốn được hữu ích để biết những gì trường hợp sử dụng của bạn. Tôi không thể nghĩ về nhiều tình huống mà đây là điều đúng đắn để làm, thay vì ẩn phần tử, hoặc loại bỏ nó khỏi DOM và thêm nó trở lại sau. – SamStephens
Tôi chưa bao giờ nhìn thấy một cái gì đó như thế :) xem xét việc ẩn nó, kết quả là như nhau. Ẩn khỏi màn hình, nhưng hiển thị trên mã nguồn, cùng một kết quả. – gpasci
Tôi không thể giấu nó, bởi vì tôi sử dụng một số plugin jquery, tương tự như xây, đó là unhiding nó trở lại. – George