2010-03-04 5 views
5

Khi sử dụng jQuery để tự động tạo đánh dấu, đôi khi nó trở nên hữu ích để nó trả về HTML thực tế mà nó tạo ra dưới dạng một chuỗi, chứ không phải là một loạt các đối tượng jQuery. Có cách nào để làm việc này không? Ví dụ, ở đây:Có cách nào để tạo đầu ra jQuery * đánh dấu thực tế * không?

$("<strong></strong>").text("Hi there!"); 

Tôi muốn để có thể trích xuất các chuỗi văn bản đơn giản

"<strong>Hi there!</strong>" 

để tôi có thể cache nó từ xa. Có cách nào để làm việc này không?

Trả lời

1

Chỉ cần gọi .html() để nhận HTML từ bất kỳ phần tử nào, bao gồm cả phần tử được tạo. Đây là từ phiên công cụ dành cho nhà phát triển Chrome:

> $("<div><span>blerg</span></div>") 
Object 
> $("<div><span>blerg</span></div>").html() 
<span>blerg</span> 

Bạn có thể thấy, mục đầu tiên trả về một đối tượng, văn bản trả về thứ hai.

3

Bạn có thể sử dụng plugin bên ngoàiHTML cho điều đó. Here is one:

jQuery.fn.outerHTML = function(s) { 
    return (s) 
    ? this.before(s).remove() 
    : jQuery("<p>").append(this.eq(0).clone()).html(); 
} 

Cách sử dụng:

alert($("<strong></strong>").text("foo").outerHTML()); 
// alerts <strong>foo</strong> 
3

Có, bạn có thể sử dụng html() chức năng

ví dụ:

$("").text("Hi There!").html(); 

Sẽ trở lại '! Hi Có'

Hãy ghi nhớ này sử dụng innerHTML, vì vậy

$("<div><b>Foo</b></div>").html(); 

sẽ trở lại

<b>Foo</b> 

Kết quả là bạn sẽ cần phải quấn mã của bạn trong một div xung quanh hoặc span.