同じ効果を得たいのjQuery.serialize()
ですが、与えられたの子要素のみを返したいのdiv
ですが。
サンプル結果:
single=Single2&multiple=Multiple&radio=radio1
同じ効果を得たいのjQuery.serialize()
ですが、与えられたの子要素のみを返したいのdiv
ですが。
サンプル結果:
single=Single2&multiple=Multiple&radio=radio1
回答:
問題ない。以下を使用してください。これはフォームのシリアル化とまったく同じように動作しますが、代わりにdivのコンテンツを使用します。
$('#divId :input').serialize();
デモについては、https://jsbin.com/xabureladi/1を確認してください(コードについては、https://jsbin.com/xabureladi/1/edit)
serialize
内のすべてのフォーム要素div
。あなたは#target-div-id
あなたのform
using 内のdiv をターゲットにすることでそれを行うことができます:
$('#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');
$("#divId").find("select, textarea, input").serialize();
パフォーマンスは向上しませんか?divに多数の行/列を持つテーブルのような要素がたくさんある場合、上記が遅くなると思います。