입력: 첫 번째 선택기와 jQuery.예()
나는 미묘한 문제에 부딪혔다. 즉,
묘사
현재 상하문을 얻을 수 없고, 그에 상응하여 추가된 청사진을 이름을 바꿀 수 없다는 것이다.만약 내가 코드를 정확하게 읽을 수 있다면, 아버지 기록의 첫 번째 입력 필드를 검사해서 위아래 문장을 찾을 수 있다.이 작업에 사용할 선택기는addFields()
입니다.내가 사용한 것은 jQuery 1.7.1 (1.7.2) 인데, 이 선택기는 입력 필드를 식별할 수 없습니다.따라서 컨텍스트는 이름이 바뀌지 않고 비어 있습니다.이것은 반대로 모든 동적으로 만들어진 필드가 같은 부모의 상하문을 공유하게 하는 것이 즐거움의 시작이다.
결함이 두 단계 (또는 그 이상) 에 노출되다레이어 2(또는 그 이상)의 네스트된 형태입니다.
jQuery 문서에서
input:first
함수 내부에 사용된 .is()
함수를 보았을 때, 위치 선택기 (예: closestChild()
처리가 바뀐 것 같습니다.나는 왜 하나:first
만 현재의 상하문을 모방할 수 있는지 정말 모르겠다. 그러나 나는 이 선택기가 input:first
의 첫날부터 사용되었기 때문에 최근의 변경이 논리를 깨뜨릴 수 있다는 것을 알 수 있다.jQuery 문서는 이 항목에서 다음과 같이 설명합니다.
Prior to jQuery 1.7, in selector strings with positional selectors such as
:first
,:gt()
, or:even
, the positional filtering is done against the jQuery object passed to.is()
, not against the containing document. So for the HTML shown above, an expression such as$("li:first").is("li:last")
returns true, but$("li:first-child").is("li:last-child")
returns false. In addition, a bug in Sizzle prevented many positional selectors from working properly. These two factors made positional selectors almost unusable in filters.Starting with jQuery 1.7, selector strings with positional selectors apply the selector against the document, and then determine whether the first element of the current jQuery set matches any of the resulting elements. So for the HTML shown above, an expression such as
$("li:first").is("li:last")
returns false. Note that since positional selectors are jQuery additions and not W3C standard, we recommend using the W3C selectors whenever feasible.
내가 확인할 수 있는 것은
nested_form
대체input:first-child
를 사용하거나 input
만 사용하면 nested_form
를 다시 일할 수 있을 것 같다는 것이다.나는 이것이 이 문제를 해결하는 정확한 방법인지 확실하지 않다.나는 최신git버전의nested form(Opera12와Firefox13을 사용)으로 문제를 폭로하고 해결 방안을 적용할 수 있다. 자바스크립트 엔진의 괴벽이 아니라는 것을 확신하지만 브라우저와 독립해야 한다.
다른 사람이 문제를 확인하고 가능한 해결 방안을 제시해 주시겠습니까?
감사합니다,
- Kostas
토론 #1
이 문제를 복제하는 테스트 프로그램을 제공해도 괜찮겠습니까?감사합니다!토론 #2
아, 네, 무섭게 신청한 예를 보여 주세요.네, 여기 하나 있습니다.https://github.com/koukou73gr/nested_form_bug.git이것은git 메모리 라이브러리를 처음 만드는 것입니다. 어떠한 오류와/또는 관련되지 않은 파일을 제출한 것에 대해 깊은 사과의 뜻을 표합니다.한 마디로 하면 이 응용 프로그램은 매우 기본적이고 하나의 이벤트 모델이 있으며 많은 기록이 있고 모든 기록은 하나의 사이트가 있다.이것은 내가 개발한 응용 프로그램에서 사용한 레이아웃과 같지만 정확한 관련 유형은 중요하지 않다. 적어도 두 차원만 있으면 된다.
복사하려면 마이그레이션을 실행하고 서버를 시작한 다음 계속하여
New Event
를 클릭하고 필드를 입력한 다음 New record
를 몇 번 클릭합니다.각 기록에는 고유한 컨텍스트가 있습니다.현재 두 개의 기록 중 New Station
을 누르고 code
필드를 검사하면 두 개의 실례가 같은 상하문을 공유하는 것을 발견할 수 있습니다. 이 상하문은 포함된 기록과 전혀 상관없이 청사진을 만들 때 사용하는 기본 상하문입니다.현재
jquery_nested_form.js
16줄을 편집하여 호출closestChild('input:first-child')
으로 서버를 다시 시작하고 상술한 조작을 실행하며 이번에 상하문을 어떻게 정확하게 픽업하는지 관찰합니다.토론 #셋
멋진 버그 보고서 감사합니다!테스트를 작성한 다음 복구 프로그램을 적용해 보겠습니다.나는 우리가 서로 다른 jQuery 버전에 대한 테스트를 해야 한다고 생각한다.토론 #4
감사합니다.하지만 나는 내가 해결 방안을 제공하지 않았다고 생각한다...나는 해커라고 부른다.그것이 작용한 것 같지만, 내가 전에 말한 바와 같이, 나는 왜 그것이 원래 있어야 하는지 이해할 수 없다.
input:first
얘가 뭘 거르려고 그래?토론 #5
인출 요청 163에서 상하문 검색을 변경하여 문제 77을 복구했습니다.이 패치는 최신 jQuery 버전에는 적용되지 않는 것 같습니다.토론 #6
네, 그렇습니다.최근의 토론도 이 문제를 보도했다.어쩌면 이 두 문제를 합쳐서 #163을 재검토할 수 있을까요?토론 #7
저는 2점짜리 돈을 투입할 것입니다. 왜냐하면 jquery 1.7.2로 끼워넣기(model->has many(model 2)->has many(model 3)의 2급accepts nested attributes 를 시도하다가 같은 문제에 부딪혔기 때문입니다.제 포크에서 저는 최종적으로 Koukou73gr의 조언input:first-child
)에 따라 순환 조건을 약간 바꿨습니다. (제 예에서 오프 by one 오류가 있음을 발견했습니다) 이것은 제 수요를 충족시킬 수 있도록 했습니다.나는 예시 프로그램이 하나도 없다./이것이 모든 상황에 적용되는지 모르겠지만, 나는 그래도 그것을 언급해야 한다고 생각한다.Pasha
토론 #8
는 버전 0.2.2를 발표했습니다.감사합니다!Reference
이 문제에 관하여(입력: 첫 번째 선택기와 jQuery.예()), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/ryanb/nested_form/issues/174텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)