중첩 된 getElementsByTagName에 jQuery를 사용하고 싶습니다. 많은 질문이 중첩 된 각 문제를 다루지 만 특수 주제로 넘어갑니다. 나는 아마도 매우 간단한 것을 알아낼 수 없습니다. 순수한 JavaScript에서는 다음이 있습니다.
tables = document.getElementsByTagName('table');
for (var t = 0; t < tables.length; t++)
{
thisTable = tables[t];
if (thisTable.id == "specialID")
{
inputs = thisTable.getElementsByTagName("input");
for (var r=0; r < inputs.length; r++)
{
thisInput = inputs[r];
if (thisInput.type == "radio")
{
if (thisInput.checked == true)
{
[do stuff]
break;
}
}
}
}
}
기본적으로 이것은 원하는 테이블 내부의 특정 라디오 버튼에 대한 테스트를 수행합니다. 중첩 된 getElementByTagName의 구문은 jQuery로 변환하려고 할 때 문제를 일으키는 원인입니다. 지금까지 나는 이것을 가지고있다 :
$("table").each(function () {
if (this.id == "specialID")
{
$("this:input").each(function () {
alert("I am here");
[test for radio and do stuff]
});
}
});
테이블의 첫 번째 "각"은 잘 작동하며 모든 테이블을 찾습니다. 그러나 입력에 대한 두 번째 "각"은 특정 테이블 내의 입력 컨트롤을 선택하지 않습니다. $ ( "this.input")이 잘못된 것 같지만 여기에서 다른 많은 작업을 시도했으며 구문 오류가 발생하거나 더 나은 결과가 없습니다. 모든 테이블 중 하나의 모든 입력을 반복 할 수있는 구문을 형성하는 올바른 방법은 무엇입니까?
당신은 할 수 있습니다으로 한 을 가진 테이블을 id
"specialID"
, 당신은이 작업을 수행 할 수 있습니다 :
$("#specialId input").each(function () {
// ...do stuff with the input
});
그러나 외부 요소가 두 개 이상있을 수 있고 그중 일부에 대해서만 내부 요소를 처리하려는 일반적인 경우 :
$("selector-for-outer-element").each(function () {
if (/*...some condition...*/) {
$(this).find("selector-for-inner-elements").each(function() {
// ...do something with the inner elements
});
}
});
또는 조건을 선택기로 표현할 수있는 경우에는 대신 조건을 자연스럽게 적용하십시오.
$("selector-for-outer-element.some-condition selector-for-inner-elements").each(function () {
// ...do something with the inner elements
});
... 기본적으로 위의 첫 번째 스 니펫으로 수행 한 작업입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다