2009-07-05 5 views
3

그래서 동적으로 컨트롤을 생성하는 JQuery가 있습니다. 입력 컨트롤은 EnterLink + 생성 된 컨트롤 수입니다. 새 입력 컨트롤을 생성 할 때 이전에 만든 입력을 변경하여 비활성화됩니다. 지금은 코드가 그렇게 보이지만 작동하지 않습니다.JQuery 동적 ID 컨트롤 속성

if (rowCount > 0) { 
        var last = rowCount - 1; 
        $("#EnterLink" + last).disabled = true; 
        } 

정상적으로 작동하는 것처럼 보입니다. 컨트롤의 ID를 확인했는데 정확히 포맷 된 것과 같습니다.

답변

10

이 교체 :이

$("#EnterLink" + last).disabled = true; 

을 :

$("#EnterLink" + last).attr('disabled', true); 

jQuery를 정규 DOM이 $() 기능을 통해 직접 속성을 노출하지 않습니다. 가지고있는 것은 하나의 엘리먼트를 확장하고 모든 jQuery 선을 그 엘리먼트에 추가하는 래핑 된 세트입니다. 당신이 #EnterLinkX의 기본 DOM 요소를 얻기 위해 원하는 경우

, 당신은이 작업을 수행 할 것입니다 : $()의 반환 값이 일치하는 요소가 포함 된 배열 같은 구조 때문에이 작동

$("#EnterLink" + last)[0].disabled = true; 

합니다. [0]에는 첫 번째 (이 경우에만 해당) 일치 항목이 포함됩니다. 이렇게하면 innerHTML 등과 같은 항목에 액세스 할 수 있습니다. 99 %의 시간이긴하지만, 라이브러리의 모든 부분을 "jQuery 방식"으로하는 것이 더 좋습니다. 이 경우 속성을 설정하려면 attr 함수를 사용하고 원할 경우 비활성화 된 값을 제거하는 것은 removeAttr 함수입니다.

+0

Gracias! 15characterlimitstinks –

+0

완전한 SO 대답 - 완전하고, 간결하고, 정확합니다! :) –

2

버튼을 비활성화하려는 경우 다음과 같습니다.

$ ("# EnterLink"+ last) .attr ("disabled", true); 또는 $ ("# EnterLink"+ last) .attr ("disabled", "disabled");

+0

http://docs.jquery.com/Alternative_Resources jquery 개발에 필요한 모든 것을 갖추고 있습니다. –