2014-09-09 1 views
0

입력 항목을 인덱스 값으로 자동 채울 스크립트를 작성 중입니다.each()에서 같은 인덱스 값

지금까지 나는이 작성했습니다 :

$('body').append($("<input>", {type: "button", id: "numeruj", value: "Numeruj"})); 
var $numery = $('input[id*="FileDescriptionTextBox"]'); 


$("#numeruj").click(function(){ 
    $numery.each(function(index){ 
    $numery.val(index) 
}) 
}) 

문제는 각 항목은 기본적으로 $ numery.length입니다 같은 인덱스 값이 할당된다는 점이다. 각 항목에 자체 색인이 지정되지 않은 이유를 알아낼 수 없습니다. 누구나 올바른 방향으로 나를 가리킬 수 있습니까?

+0

은'.click'가 DOM에 이미 존재하는 요소 작품 동적 작동되는 .on'는 DOM 요소를 생성'사용 – diEcho

+0

나는 그것에 대해 잘 모르겠지만 당신은 클래스와 ID를 대체하려고 했나요? – T00rk

+1

'$ numery.val (function (index) { return index; })' –

답변

3

각 블록 안에 $(this)을 사용해야합니다. 키워드 this는 요소

사용

$("#numeruj").click(function() { 
    $numery.each(function(index) { 
     $(this).val(index); //You need to use this 
    }) 
}) 
+0

'this.value = index'는 여분의 함수 호출없이 트릭을 수행 할 것이지만, jQuery 'select'와 다른 좀 더 복잡한 태그가 사용되면 way가 더 좋습니다. – GillesC

+1

감사합니다. 그것은 그 문제를 해결했습니다. 이 사용하여 시도했지만 jquery 개체에 배치하는 것에 대해 생각하지 않았다. 이 경우이 키워드는 이미 jquery 객체를 참조한다고 가정했습니다. 대신 표준 js 요소를 참조합니까? –

1

당신이 $의 numery를 사용하고 있기 때문에 당신이 이전 라인에서 정의하고 그것을 모두 하나 개의 값에 대한 인덱스를 설정합니다을 의미합니다. 각 기능 내부

사용 $(this) 대신 $numery :

$("#numeruj").click(function(){ 
    $numery.each(function(index){ 
     $(this).val(index) 
    }) 
})