我想获得与相同的效果,jQuery.serialize()
但是我只想返回给定子元素的子元素div
。
样本结果:
single=Single2&multiple=Multiple&radio=radio1
我想获得与相同的效果,jQuery.serialize()
但是我只想返回给定子元素的子元素div
。
样本结果:
single=Single2&multiple=Multiple&radio=radio1
Answers:
没问题。只需使用以下内容。这将与序列化表单完全一样,只是使用div的内容。
$('#divId :input').serialize();
检查https://jsbin.com/xabureladi/1的示范(https://jsbin.com/xabureladi/1/edit的代码)
serialize
内的所有形式元素div
。你可以做到这一点通过靶向DIV #target-div-id
您的内部form
使用:
$('#target-div-id').find('select, textarea, input').serialize();
我当前使用的功能:
/**
* 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')。serialize()
那我的解决方案呢:
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');
如果这些元素具有通用的类名,则也可以使用以下名称:
$('#your_div .your_classname').serialize()
这样,您可以避免选择按钮,而将使用jQuery选择器进行选择:input
。虽然也可以通过使用$('#your_div :input:not(:button)').serialize();
$("#divId").find("select, textarea, input").serialize();
更好的性能吗?我想如果div有很多元素(例如带有多个行/列的表),则上述操作可能会变慢。