2010-02-02 3 views
2

.inputBox 클래스에 5 개의 입력 상자가 있다면 jquery 함수는 각 .inputBox 행 다음에 5 번 태그를 추가합니다. 왜 그런가요?jquery .each function

각 .inputBox 다음에 이러한 태그를 한 번만 삽입하면됩니다.

누구나 그 방법을 알고 계십니까?

function addImages() {   

    $(".inputBox").each(function() { 

      $('.inputBox').after("<img src=\"Images/thumbs_up_48.png\" class=\"thumbV\" id=\"up\" />"); 
      $('.inputBox').after("<img src=\"Images/thumbs_down_48.png\" class=\"thumbV\" id=\"down\" />"); 
    }); 
} 

html로

<label for="FirstName">First Name</label> 
<input type="text" class="inputBox" name="FirstName" title="First Name Here" id="firstName" /> 

답변

1

사용 :

$(this).after("<img src=\"Images/thumbs_up_48.png\" class=\"thumbV\" id=\"up\" />"); 
$(this).after("<img src=\"Images/thumbs_down_48.png\" class=\"thumbV\" id=\"down\" />"); 

$ ('.에서 InputBox')가 전체 DOM을 통해 당신이 그것을 호출 할 때마다 반복됩니다.

더 좋은 방법은

$(".inputBox") 
     .after("<img src=\"Images/thumbs_up_48.png\" class=\"thumbV\" id=\"up\" />") 
     .after("<img src=\"Images/thumbs_down_48.png\" class=\"thumbV\" id=\"down\" />"); 

것입니다 그리고 당신을 위해 작동 답을 '수용'하는 것을 잊지 마세요. 당신은 단순히 각을 잃고 단지 당신은 아마 each 필요가 없습니다

$('.inputBox').after("<img src=\"Images/thumbs_up_48.png\" class=\"thumbV\" id=\"up\" />"); 
$('.inputBox').after("<img src=\"Images/thumbs_down_48.png\" class=\"thumbV\" id=\"down\" />"); 
+0

다른 게시물에 적용된 답변이 없습니다. 각각의 기능을 발견하고이를 시험해 보았습니다. 감사! – Catfish

0

, 당신은 무엇입니까? 패트릭이 제안한 코드와 수정을 바탕으로, each() 호출없이 원래 코드를 사용할 수 있다고 생각합니다.

+0

죄송합니다. 가독성을 높이기 위해 조각을 남겼습니다. 나는 $ ('inputBox')를 사용하기 때문에 .each가 필요하다. 각 (function (index)) 그리고 위와 아래에 id에 추가 된 인덱스 값을 사용하여 + 인덱스와 아래 + 인덱스가 될 것이다. – Catfish