Sự khác biệt giữa thay thế của jQueryWith () và html () là gì?


145

Sự khác biệt giữa các hàm thay thế của jQuery () và html () của jQuery khi HTML được truyền vào dưới dạng tham số là gì?


2
Điều này đã giúp tôi! Tôi đã cố gắng thay đổi văn bản của một nhãn một cách linh hoạt bằng cách sử dụng jquery và chủ đề này chắc chắn đã giúp tôi. Cảm ơn!
HereToLearn_

Câu trả lời:


289

Lấy mã HTML này:

<div id="mydiv">Hello World</div>

Đang làm:

$('#mydiv').html('Aloha World');

Sẽ cho kết quả:

<div id="mydiv">Aloha World</div>

Đang làm:

$('#mydiv').replaceWith('Aloha World');

Sẽ cho kết quả:

Aloha World

Vì vậy, html () thay thế nội dung của phần tử, trong khi thay thếWith () thay thế phần tử thực tế.


1
Giải thích tốt đẹp!
Luis Gouveia

31

thay thếWith () sẽ thay thế phần tử hiện tại, trong khi html () chỉ đơn giản là thay thế nội dung.

Lưu ý rằng thay thếWith () sẽ không thực sự xóa phần tử mà chỉ xóa phần tử đó khỏi DOM và trả lại cho bạn trong bộ sưu tập.

Một ví dụ cho Peter: http://jsbin.com/ofirip/2


3
+1 rất hữu ích khi viết nó ra mà thay thếWith () không thực sự xóa phần tử. Tôi đã không tìm ra điều này!
Peter

2
Đó là sự thật, nó vẫn tồn tại. Nó không có trong DOM, vì vậy bạn sẽ không thấy nó, nhưng nó vẫn là một đoạn HTML hợp lệ. Bằng chứng: jsbin.com/ofirip/2
cgp

1
đúng vậy đây là sự thật. cảm ơn vì đã đưa ví dụ lên Tôi đã nghĩ đến việc loại bỏ nó khỏi DOM (cộng với bộ sưu tập rác) về cơ bản là xóa khỏi quan điểm của tôi. Nhưng bạn đúng về mặt kỹ thuật. Tôi sẽ loại bỏ -1và hy vọng điều này sẽ hữu ích cho tất cả. :)
Peter

1
Cảm ơn bạn đã lưu ý, thay thếWith () trả lại phần tử cũ chỉ mang lại cho tôi một số thất vọng gỡ lỗi :(
dain

2
Vâng, tôi đã chiến đấu với điều này trong ít nhất nửa giờ rồi, tôi mới nhận ra rằng hàm trả về phần tử đã thay thế, tôi đã hy vọng nó sẽ trả về phần tử mới với mã như thế này: var $form = $target.closest('tr').replaceWith(html) Hóa ra nó $formcó chứa phần tử trước khi thay thế. thở dài
Pawel Krakowiak

5

Có hai cách sử dụng các hàm Jquery html () và thay thếWith ().

<div id="test_id">
   <p>My Content</p>
</div>

1.) html () so với thay thế Với ()

var html = $('#test_id p').html(); sẽ trả lại "Nội dung của tôi"

Nhưng var replaceWith = $('#test_id p').replaceWith();sẽ trả về toàn bộ đối tượng DOM của <p>My Content</p>.


2.) html ('value') so với thayWith ('value')

$('#test_id p').html('<h1>H1 content</h1>'); sẽ cung cấp cho bạn sau đây đặt ra.

<div id="test_id">
  <p><h1>H1 content</h1></p>
</div>

Nhưng $('#test_id p').replaceWith('<h1>H1 content</h1>');sẽ cung cấp cho bạn sau đây đặt ra.

<div id="test_id">
      <h1>H1 content</h1>
</div>

2

Câu hỏi cũ nhưng điều này có thể giúp một ai đó.

Có một số khác biệt về cách các chức năng này hoạt động trong Internet Explorer và Chrome / Firefox NẾU HTML của bạn không hợp lệ.

Dọn dẹp HTML của bạn và chúng sẽ hoạt động như tài liệu.

(Không đóng </center>chi phí cho tôi buổi tối của tôi!)


6
Đó là lý do tại sao bạn không nên sử dụng trung tâm nữa. : p
Bộ lạc Romain

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.