[英]How to serialize current div by using $(this).parent() with JQuery?
我試圖通過使用clickevent序列化當前div。 有關說明,請參閱代碼:
$("#createreview").live('click', function() {
alert($(this).parent().serialize());
$.post('/admin/home/review/create/', $(this).parent().serialize(), function(data){
alert('Review succesfully added to database.' +data);
});
});
警報將不顯示任何內容,這意味着div未被序列化。 這是有問題的HTML。 它在一個對話框里面,這也是我必須使用live()的原因。
<div id="reviewdiv">
<input type="hidden" value="7" name="homeid">
<label>Content</label><textarea name="reviewcontent" id="reviews" rows="3" cols="60"></textarea><br>
<label>Author</label> <input type="text" name="reviewauthor"><button class="ui-state-default ui-corner-all" id="createreview">Save Review</button><button class="ui-state-default ui-corner-all" id="removereview">Remove Review</button><br>
</div>
此代碼通過使用clickevent和父選擇器刪除當前div也沒有問題。
$("#removereview").live('click', function() {
$(this).parent().slideUp();
});
您可以序列化<div>
。
serialize在內部使用param
方法。 因此,要序列化不屬於表單的輸入元素,請使用param
方法。 示例: http : //jsfiddle.net/DdVqJ/
但請記住,正確的(和語義)方法是將輸入元素放在表單中。
你不能序列化<div>
,你需要有一個<form>
,所以替換它:
<div id="reviewdiv">
有了這個:
<form id="reviewdiv">
然后你可以用它來序列化:
$(this).closest('form').serialize()
要理解這個區別這里是你所擁有的 (A <div>
不進行序列化和這里的<form>
的版本 ,其做序列化。 因為它使用form.elements
集合來循環,所以除了<form>
什么都可以。
我知道這是一個舊帖子,但你可以使用:
$('#reviewdiv :input').serialize();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.