簡體   English   中英

如何使用$(this).parent()和JQuery序列化當前div?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM