jQuery只序列化div内的元素

我想获得与jQuery.serialize()相同的效果,但我只想返回给定的div的子元素。

样品结果:

 single=Single2&multiple=Multiple&radio=radio1 

没问题。 只要使用以下。 这将完全像序列化表单,而是使用div的内容。

 $('#divId :input').serialize(); 

查看http://jsbin.com/azodo进行演示(代码为http://jsbin.com/azodo/edit

如果限制jQuery将查看的项目,则可以提高代码的速度。

使用select器:input而不是*来实现它。

 $('#divId :input').serialize() 

这将使您的代码更快,因为项目列表更短。

serialize div所有表单元素。

你可以通过在你的form使用以下命令来实现div #target-div-id

 $('#target-div-id').find('select, textarea, input').serialize(); 

希望这可以帮助。

我目前使用的function是:

 /** * Serializes form or any other element with jQuery.serialize * @param el */ serialize: function(el) { var serialized = $(el).serialize(); if (!serialized) // not a form serialized = $(el). find('input[name],select[name],textarea[name]').serialize(); return serialized; } 

也试试这个:

$( '#DIVID')。find( 'input')。序列化()

我的解决scheme如何:

 function serializeDiv( $div, serialize_method ) { // Accepts 'serialize', 'serializeArray'; Implicit 'serialize' serialize_method = serialize_method || 'serialize'; // Unique selector for wrapper forms var inner_wrapper_class = 'any_unique_class_for_wrapped_content'; // Wrap content with a form $div.wrapInner( "<form class='"+inner_wrapper_class+"'></form>" ); // Serialize inputs var result = $('.'+inner_wrapper_class, $div)[serialize_method](); // Eliminate newly created form $('.script_wrap_inner_div_form', $div).contents().unwrap(); // Return result return result; } /* USE: */ // For: $('#div').serialize() serializeDiv($('#div')); /* or */ serializeDiv($('#div'), 'serialize'); // For: $('#div').serializeArray() serializeDiv($('#div'), 'serializeArray'); 
 function serializeDiv( $div, serialize_method ) { // Accepts 'serialize', 'serializeArray'; Implicit 'serialize' serialize_method = serialize_method || 'serialize'; // Unique selector for wrapper forms var inner_wrapper_class = 'any_unique_class_for_wrapped_content'; // Wrap content with a form $div.wrapInner( "<form class='"+inner_wrapper_class+"'></form>" ); // Serialize inputs var result = $('.'+inner_wrapper_class, $div)[serialize_method](); // Eliminate newly created form $('.script_wrap_inner_div_form', $div).contents().unwrap(); // Return result return result; } /* USE: */ var r = serializeDiv($('#div')); /* or serializeDiv($('#div'), 'serialize'); */ console.log("For: $('#div').serialize()"); console.log(r); var r = serializeDiv($('#div'), 'serializeArray'); console.log("For: $('#div').serializeArray()"); console.log(r); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="div"> <input name="input1" value="input1_value"> <textarea name="textarea1">textarea_value</textarea> </div> 

如果这些元素有一个共同的类名称,也可以使用这个:

 $('#your_div .your_classname').serialize() 

这样,你可以避免selectbutton,这将是使用jQueryselect器:input 。 虽然这也可以通过使用$('#your_div :input:not(:button)').serialize();来避免$('#your_div :input:not(:button)').serialize();

 $('#divId > input, #divId > select, #divId > textarea').serialize();