Điều này có vẻ giống như một yêu cầu kỳ lạ, và nó khá là bình thường, nhưng đó là một thách thức mà tôi đang cố giải quyết.JavaScript: làm thế nào để tuần tự hóa phần tử DOM dưới dạng chuỗi được sử dụng sau này?
Giả sử bạn có phần tử DOM, được tạo thành từ HTML và một số CSS đang được áp dụng và một số trình xử lý sự kiện JS. Tôi muốn sao chép phần tử này (và tất cả CSS và JS đang được áp dụng), tuần tự hóa nó như một chuỗi mà tôi có thể lưu trong cơ sở dữ liệu để được thêm vào DOM trong một yêu cầu trong tương lai. Tôi biết jQuery có một vài trong số các phương thức này (như $ .css() để có được các kiểu tính toán) nhưng làm cách nào tôi có thể thực hiện tất cả những thứ này và biến nó thành chuỗi mà tôi có thể lưu trong cơ sở dữ liệu?
Cập nhật: Dưới đây là một yếu tố ví dụ:
<div id="test_div" class="some_class">
<p>With some content</p>
</div>
<style>
#test_div { width: 200px }
.some_class { background-color: #ccc }
</style>
<script>
$('#test_div').click(function(){
$(this).css('background-color','#0f0');
});
</script>
... và có thể là một serialization mẫu:
var elementString = $('#test_div').serializeThisElement();
mà sẽ cho kết quả trong một chuỗi mà trông giống như sau:
<div id="test_div"
class="some_class"
style="width:200px; background-color:#ccc"
onclick="javascript:this.style.backgroundColor='#0f0'">
<p>With some content</p>
</div>
để tôi có thể gửi dưới dạng yêu cầu AJAX:
$.post('/save-this-element', { element: elementString } //...
Ở trên chỉ là ví dụ. Nó sẽ là lý tưởng nếu serialization có thể trông rất giống với ví dụ ban đầu, nhưng miễn là nó render giống như bản gốc, tôi sẽ ổn với điều đó.
chúng ta đang nói về một yếu tố duy nhất? Hoặc một cấu trúc DOM lồng nhau có kích thước tùy ý? – nrabinowitz
Bạn có thể đưa ra một chuỗi đầu ra mẫu mà bạn mong đợi không? –
Việc lưu trữ các tham chiếu đến các cuộc gọi lại sự kiện sẽ không đáng tin cậy. –