Khi tôi replaceWith
một yếu tố để đưa một trong DOM, sau đó replaceWith
nó trở lại, các sự kiện đã đăng ký để nó không kích hoạt. Tôi cần sự kiện để giữ nguyên vẹn.Sự kiện không đăng ký sau khi thay thếWith
Dưới đây là Javascript tôi:
var replacement = $(document.createElement('span'));
var original = $(this).replaceWith(replacement);
replacement
.css('background-color', 'green')
.text('replacement for ' + $(this).text())
.click(function() {
replacement.replaceWith(original);
});
Trong bản demo, khi bạn nhấp vào một phần tử, nó được thay thế bằng một yếu tố khác sử dụng replaceWith
. Khi bạn nhấp vào phần tử mới, phần tử mới được thay thế bằng phần tử gốc bằng cách sử dụng replaceWith
. Tuy nhiên, trình xử lý nhấp chuột không hoạt động nữa (nơi tôi nghĩ là cần).
Bạn đã kết thúc bằng cách sử dụng tính năng kết nối lại sự kiện hay bạn có thể đưa sự kiện trực tiếp vào hoạt động không? Tôi đang làm điều tương tự, và rất thích học hỏi từ kinh nghiệm của bạn. –
@Erick T, tôi xin lỗi, nhưng tôi thành thật không thể nhớ được. Tôi đã hỏi câu hỏi này gần hai năm trước. Tôi nghĩ rằng việc sử dụng '$ .fn.live' không hoạt động vì tôi đang xử lý các phần tử thực, chứ không phải là một bộ chọn. ('$ .fn.delegate' (không tồn tại sau đó) có thể làm việc cho bạn như là một thay thế' live'.) Vì câu trả lời tôi đã chọn, tôi cho rằng tôi đã kết thúc việc gắn lại trình xử lý sự kiện. Bạn có thể thử nhân bản sâu phần tử (IIRC có thể giữ các trình xử lý sự kiện trong jQuery mới nhất). – strager