테스트 사이트 - 개발 중인 베타 버전입니다

appendTo 질문

YeChanDo 7년 전 조회 2,744

아래 코드처럼 appendTo을 이용해서 추가를할려고하는데 이상하게 두번씩 추가되네요..

뭐가 문제일까요..ㅜㅜ

 

<div id="p_scents">

    <p>

        <label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /></label>

    </p>

</div></p>

<p> </p>

<p><script>

                $(function() {

        var scntDiv = $('#p_scents');

        var i = $('#p_scents p').size() + 1;

        

        $('#addScnt').live('click', function() {

                $('<p>'+ i +'<a id="remScnt">삭제</a></p>').appendTo(scntDiv);

                i++;

                return false;

        });

        

        $('#remScnt').live('click', function() { 

                if( i > 2 ) {

                        $(this).parents('p').remove();

                        i--;

                }

                return false;

        });

});</p>

<p></script></p>

<p> </p>

<p>

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

제국치천

1. jQuery에서 .live()는 삭제되었습니다. .on()으로 대체하시는 것을 권장드립니다.

 

2. .size() 역시 삭제되었습니다. 되도록이면 .length로 대체하시는 것을 권장드립니다.

 

3. 엘리먼트의 id는 유니크값이어야 합니다. 작성하신 코드로 보아 #remScnt는 여러 개가 존재하게 되는데, 동일한 id를 가진 엘리먼트가 여러 개 존재하게 되면 스크립트가 정상적으로 작동하지 않을 가능성이 높습니다. class 등 다른 어트리뷰트를 사용하시는 것을 권장드립니다.

 

 

올려 주신 코드로 페이지 작성해서 테스트해보니 정상적으로 1개씩 추가됩니다. 올려 주신 부분에는 위에 제가 나열한 문제들 외에는 특별히 문제가 없습니다. 기재하지 않은 부분에 오류가 있지 않나 생각합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

7년 전

id="addScnt" 를 가지고 있는 태그를 검색해보세요. 여러개일 가능성이 높습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인