2012-02-20 2 views
0

단추를 클릭하면 단추 다음에 첫 번째 텍스트 상자를 선택하고 날짜를 삽입해야하는 단추 집합이 있습니다. 내 양식은 동적으로 생성되므로 하드 코딩 된 가로 쓰기는 작동하지 않습니다. 즉, 텍스트 상자가 항상 버튼 바로 뒤에있는 것은 아니며, 그 사이에 다른 요소가있을 수 있습니다. find()을 사용해 보았지만 작동하지 않는 것 같습니다. 어떤 아이디어?jQuery를 사용하여 transversing없이 첫 번째 요소를 찾는 방법은 무엇입니까?

$('.required').on('click',function(){ 

     ... 

     $(this).find(".timestamp").first().val(dateStr); 

     ... 

}); 

편집 : 항상 페이지의 첫 번째 텍스트 상자의 값을 채 웁니다

$(this).parent().parent().siblings().find(".timestamp").first().val(dateStr); 

조금 더 가까이 있지만 위. 나는 first() 대신 closest()를 사용하려고 시도했으나 어느 것도 작동하지 않는 것 같습니다. 어떤 아이디어?

답변

1

.find()이 요소의 후손이 아닌 요소의 형제 자매를 통과. 당신이 원하는 것처럼

그것은 소리가 더 같은 :

$(this).siblings('.timestamp').first().val(dateStr); 
+0

텍스트 상자는 반드시 항상 형제하지만, 그것은 예를 들어 부모 DIV에 위치 할 수 없습니다. – Michael

+0

모든 가능성을 다루기 위해서는'.siblings()','.find()','.closest()'가 필요합니다. 그것은 좋은 해결책은 아니지만, 텍스트 상자가 움직일 때 텍스트 상자의 위치를 ​​추적하는 것이 더 저렴할 것입니다 (버튼/텍스트 상자의 각 쌍에 고유 ID를 할당하십시오) –

+0

그래서'$ (this) .parent() first() .val (dateStr);'페이지의 첫 번째 텍스트 상자에 대한 값만 채 웁니다. 나는'first()'대신에'closest()'를 사용하려고 시도했지만, 그 중 하나는 작동하지 않는 것 같습니다. 어떤 아이디어? – Michael

0

사용 closest() :

$(this).closest(".timestamp").val(dateStr); 
0
$(this).find(".timestamp:first-child").val("SetYourVal"); 
0
$(this).find(".timestamp:first").val(dateStr); // 
관련 문제