source

jdiv 내의 요소만 직렬화하기 위한 쿼리

manysource 2023. 8. 18. 22:47

jdiv 내의 요소만 직렬화하기 위한 쿼리

와 같은 효과를 얻고 싶습니다.jQuery.serialize()하지만 저는 주어진 아이들만 돌려주고 싶습니다.div.

샘플 결과:

single=Single2&multiple=Multiple&radio=radio1

괜찮아요.다음을 사용하면 됩니다.이것은 폼을 직렬화하는 것과 똑같이 동작하지만 대신 div의 콘텐츠를 사용합니다.

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

데모는 https://jsbin.com/xabureladi/1 에서 확인하십시오(코드는 https://jsbin.com/xabureladi/1/edit ).

jQuery에서 볼 항목을 제한하면 코드 속도를 향상시킬 수 있습니다.

* 대신 선택기:input을 사용하여 설정합니다.

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

이렇게 하면 항목 목록이 짧기 때문에 코드가 더 빨라집니다.

serialize내부의 모든 형식 지정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').연재하다

내 솔루션은?

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>

이러한 요소에 공통 클래스 이름이 있는 경우 다음을 사용할 수도 있습니다.

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

이렇게 하면 jQuery 선택기를 사용하여 선택되는 버튼의 선택을 피할 수 있습니다.:input이는 다음을 사용하여 방지할 수도 있습니다.$('#your_div :input:not(:button)').serialize();

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

언급URL : https://stackoverflow.com/questions/1829519/jquery-to-serialize-only-elements-within-a-div