2013-03-21 33 views
6

Tôi đang tìm kiếm một cách để quấn, với jQuery, một yếu tố vào một bình luận, như:jQuery bình luận/bỏ ghi chú <! - yếu tố ->

<!-- 
<div class="my_element"></div> 
--> 

và cũng là một cách để loại bỏ những ý kiến .

Điều này có khả thi không? bởi vì tôi không thể tìm thấy gì liên quan.

+4

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

+0

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

+0

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

Trả lời

15

Để 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); 
    } 
}); 
+0

Điều này hoàn toàn hoạt động! Cám ơn rất nhiều! – LittleTreeX

-2

Để gói?

function wrap(jQueryElement){ 
    jQueryElement.before("<!--").after("-->"); 
} 

Không chắc chắn bạn sẽ tìm thấy nhận xét thành công như thế nào một lần. Tìm kiếm văn bản trên phần tử nội dung bằng cách sử dụng cụm từ thông dụng là một tùy chọn.

Hoặc này - is it possible to remove an html comment from dom using jquery

+3

điều này không hoạt động: http://jsfiddle.net/zjjBE/nó xử lý cái đầu tiên là cả mở và đóng, và thứ hai là một chuỗi. –

+0

Đủ công bằng. Vẫn còn câu hỏi khập khiễng;) – LiverpoolsNumber9

2

Bạn có thể bình luận nguyên tố này ra bằng cách làm như sau:

function comment(element){ 
    element.wrap(function() { 
     return '<!--' + this.outerHTML + '"-->'; 
    }); 
} 

DEMO: http://jsfiddle.net/dirtyd77/THBpD/27/

+0

Cảm ơn, nhưng không thể bỏ ghi chú, đúng không? – George

+1

Vẫn nhìn vào nó, tôi sẽ cho bạn biết :) – Dom

+1

this.outerHTML nên là đủ, không cần $() –

Các vấn đề liên quan