Ben de aynı etkiyi elde etmek jQuery.serialize()
isterdim , ancak bir verilenin sadece çocuk özelliklerini iade etmek isterim div
.
Örnek sonuç:
single=Single2&multiple=Multiple&radio=radio1
Ben de aynı etkiyi elde etmek jQuery.serialize()
isterdim , ancak bir verilenin sadece çocuk özelliklerini iade etmek isterim div
.
Örnek sonuç:
single=Single2&multiple=Multiple&radio=radio1
Yanıtlar:
Sorun değil. Sadece aşağıdakileri kullanın. Bu, tam olarak bir formu serileştirmek gibi, ancak bunun yerine bir div içeriğini kullanır.
$('#divId :input').serialize();
Bir gösteri için https://jsbin.com/xabureladi/1 adresini kontrol edin ( kod için https://jsbin.com/xabureladi/1/edit )
serialize
içindeki tüm form öğeleri div
.Bunu, kullanımınızın #target-div-id
içindeki div'i hedefleyerek yapabilirsiniz form
:
$('#target-div-id').find('select, textarea, input').serialize();
Şu anda kullandığım işlev:
/**
* 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;
}
Ayrıca şunu da deneyin:
$ ( '# Divld'). ( 'Giriş') bulabilirsiniz. Serialize ()
Ya benim çözümüm:
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');
Bu elemanların ortak bir sınıf adı varsa, bu da kullanılabilir:
$('#your_div .your_classname').serialize()
Bu şekilde, jQuery seçici kullanılarak seçilecek olan düğmelerin seçiminden kaçınabilirsiniz :input
. Bununla birlikte, bu da kullanılarak önlenebilir.$('#your_div :input:not(:button)').serialize();
$('#divId > input, #divId > select, #divId > textarea').serialize();
ID
her bir seçicide aşağıdaki gibi belirtmeniz gerekir $('#divId > input, #divId > select, #divId > textarea')
:; Ayrıca, >
sembolü doğrudan alt unsurlara atıfta bulunuyor ... Bu senaryoda çok sıra dışı veya en azından çok kısıtlayıcı.
$("#divId").find("select, textarea, input").serialize();
iyi performans sağlamaz mı? Div, birkaç satır / sütun içeren bir tablo gibi çok sayıda öğeye sahip olsaydı, yukarıdakilerin yavaşlayabileceğini hayal ediyorum.