나는 같은 효과를 얻고 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
사용하여 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');
이러한 요소에 공통 클래스 이름이있는 경우 다음을 사용할 수도 있습니다.
$('#your_div .your_classname').serialize()
이렇게하면 jQuery 선택기를 사용하여 선택되는 버튼 선택을 피할 수 있습니다 :input
. 이것은 또한 사용하여 피할 수 있지만$('#your_div :input:not(:button)').serialize();
$("#divId").find("select, textarea, input").serialize();
더 나은 성능을 기대 하지 않겠습니까 ? div에 여러 행 / 열이있는 테이블과 같이 많은 요소가 있으면 위의 내용이 느려질 수 있다고 생각합니다.