removedata remove quitar eliminar data cache attribute jquery serialization

remove - jQuery para serializar solo elementos dentro de un div



remove text jquery (8)

Me gustaría obtener el mismo efecto que jQuery.serialize() pero me gustaría devolver solo los elementos secundarios de un div dado.

Resultado de la muestra:

single=Single2&multiple=Multiple&radio=radio1


serialize todos los elementos de formulario dentro de un div .

Puede hacerlo apuntando a div #target-div-id dentro de su form usando:

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

Espero que esto ayude.


¿Qué hay de mi solución?

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>


La función que uso actualmente:

/** * 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; }


No hay problema. Solo usa lo siguiente. Esto se comportará exactamente como serializar un formulario, pero usando un contenido de div en su lugar.

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

Consulte http://jsbin.com/azodo para obtener una demostración ( http://jsbin.com/azodo/edit para obtener el código)


Pruebe también esto:

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


Puede mejorar la velocidad de su código si restringe los elementos que verá jQuery.

Use el selector : ingrese en lugar de * para lograrlo.

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

Esto hará que su código sea más rápido porque la lista de artículos es más corta.


Si esos elementos tienen un nombre de clase común, uno también puede usar esto:

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

De esta forma puede evitar la selección de botones, que se seleccionarán mediante el selector jQuery :input . Aunque esto también se puede evitar usando $(''#your_div :input:not(:button)'').serialize();


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