2010-06-21 16 views
8

Lý do là chúng ta có thể làm

$('<div>some text</div>').prependTo('#someDiv') 

vậy, điều này cũng là ok để làm:

$('some text').prependTo('#someDiv') 

nhưng chúng tôi không thể thay đổi some text-body? body chỉ là tốt như bất kỳ văn bản ...

(các mã trên sẽ bổ sung some text đến div với id someDiv, vì vậy những gì nếu tôi muốn thêm từ body để div?)

nhưng $ ('body') trở thành bộ chọn cho phần tử cơ thể ... vậy có quy tắc nói rằng, chúng ta có thể sử dụng bất kỳ văn bản nào dưới dạng mã HTML, miễn là nó không phải là tên của các phần tử HTML?

+0

bạn có thể xây dựng nhiều hơn một chút được không? – Sarfraz

Trả lời

8

Về cơ bản đây là không bao giờ hợp lệ:

$('generic text here, *not* a selector or HTML'); 

Điều đó sẽ luôn thể là một chọn (tìm kiếm một phần tử) hoặc html (tạo phần tử (s)), you can view the API for $() here.

Bạn muốn sử dụng một trong những khác DOM Insertion methods đây, .prepend() trong trường hợp này:

$('#someDiv').prepend('any text or html here is valid, <b>Hey look bold</b>.'); 
0

Xử lý các nút văn bản không phù hợp với JQuery. Bạn có thể sử dụng các phương thức DOM thông thường:

$('#someDiv')[0].appendChild(document.createTextNode("body")); 
0

Điều này là do jQuery xem xét các bộ chọn trước khi tạo đoạn mã HTML. "body" là một bộ chọn hợp lệ và sẽ được sử dụng làm công cụ chọn.

Bạn muốn được tốt hơn của việc sử dụng các chức năng thêm vào trước để thêm vào trước HTML hoặc văn bản đến một nút:

$('#someDiv').prepend('some text'); 

Giá trị truyền cho thêm vào trước không được sử dụng một chọn và bạn có thể thêm văn bản "cơ thể".

1

Nếu thẻ có chứa thẻ html thì nó được coi là html (trừ khi nó cắt văn bản trước thẻ đầu tiên và sau thẻ cuối cùng). ví dụ: $("<div>some text</div>"). Nếu không, nó được coi là một bộ chọn, ví dụ: $("some text").

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