jQuery는 부모 양식 찾기


219

이 HTML이 있습니다

<ul>
    <li><form action="#" name="formName"></li>
    <li><input type="text" name="someName" /></li>
    <li><input type="text" name="someOtherName" /></li>
    <li><input type="submit" name="submitButton" value="send"></li>
    <li></form></li>
</ul>

의 input[name="submitButton"]일부인 양식을 어떻게 선택할 수 있습니까? (제출 버튼을 클릭하면 양식을 선택하고 그 안에 일부 필드를 추가하고 싶습니다)

답변:


485

closest가장 가까운 매칭 부모 요소를 선택하는을 사용 하는 것이 좋습니다 .

$('input[name="submitButton"]').closest("form");

이름으로 필터링하는 대신 다음과 같이하십시오.

$('input[type=submit]').closest("form");

2
인덱스별로 가져 오기를 추가해야합니까? '$ ( "input [type = submit]"). closest ( "form");' 폼의 배열을 반환합니다.
— sergzach

위와 같은 방법으로 위의 방법을 사용하려고합니다 : $ ( ". each img"). click (function () {$ (this) .closest ( "form"). show ();}); 그러나 나는 그것을 작동시키지 못하는 것 같습니다. : /
— Alisso 2016 년

2
peterjwest 답변이 이것보다 낫습니다.
— gagarine

HTML5에는 새로운 'form'속성이있어 부모 폼 외부에 요소를 가질 수 있습니다. 먼저 확인해야합니다.
— mcintyre321

56

모든 입력에 존재하는 양식 참조를 사용할 수 있습니다 .closest()(Chrome 및 IE8에서는 5-10 배 빠름). IE6 & 7에서도 작동합니다.

var input = $('input[type=submit]');
var form = input.length > 0 ? $(input[0].form) : $();

2
IE8을 언급했습니다. 버전 6, 7, 9에서도 작동합니까?
— Sonny

1
@peterjwest가 언급했듯이 훨씬 낫고 빠릅니다. Re IE6 입력 요소의 .form이 IE4에 있다고 생각합니다. 불행히도 netscape dev 페이지가 사라졌습니다 ... 모질라를 확인하는 사람은 누구입니까?
— Maciej Łopaciński

이 훨씬 안전한 방법보다는 사용하고 closest(): 입력이 자신의 양식을 할당 할 수 있습니다 때문에 codepen.io/anon/pen/vNqEyg
— Möhre

코드를 짧게 유지하기 위해 표기법을 사용하는 경우이 속기를 사용했을 수도 있지만이 예에서는 표시하려는 실제 코드 (특히 속기에 익숙하지 않은 사람들에게만 해당)에서만 산만합니다. 정규 if ()를 사용하는 것이 좋습니다.
— AeonOfTime

그 솔루션에 너무 많은 혼란이 있다고 말하고 싶습니다. 이걸로 가면 (아래의 해결책-예 : 이것은 광고입니다 :) : stackoverflow.com/a/18921404/261332 , 그런 합병증이 필요하지 않습니다. 그렇지 않으면 아무것도하지 마십시오.
— userfuser

17

나에게 이것은 가장 간단하고 빠른 것처럼 보입니다.

$('form input[type=submit]').click(function() { // attach the listener to your button
   var yourWantedObjectIsHere = $(this.form);   // use the native JS object with `this`
});

2
나를 위해, 사용하는 $(this.form)것이 가장 좋은 해결책입니다.
— jap1968


당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.