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();