채택완료

제이쿼리 기초문법 live 질문입니다.

2019-01-07 (월) 20:10:59 2,230
Copy
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <title>sample16</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <script type="text/javascript">
            $(function(){
                $('a').live('click',function(){   
                    $('img').attr({'src':$(this).attr('href')}).attr({'alt':$(this).text()});
                    return false;
                });
                $('button').click(function(){
                    $('ul').append('<li><a href="building.jpg">건물</a></li>');
                });
            });
        </script>
    </head>
    <body>
        <button>li 요소를 추가</button>
    <ul> 
        <li><a href="flower.jpg"> 꽃</a></li>
        <li><a href="sea.jpg"> 바다</a></li>    
        <li><a href="jellyfish.jpg"> 해파리</a></li>
    </ul>
        <p><img src="flower.jpg" alt=" 꽃" /></p>

    </body>
</html>

위 원문입니다.

앞으로 추가될 태그에 이벤트 처리를 설정할 수 있는 live() 를 배우고 있는데요. -.-;;;

위 원문에서 live대신에 그냥 on으로 바꾸고 버튼을 클릭하면 일단 태크는 추가가 됩니다..

그런데, on 대신에 live로 바꾸면 

콘솔오류가 발생됩니다..

sample16.html:11 Uncaught TypeError: $(...).live is not a function
    at HTMLDocument.<anonymous> (sample16.html:11)
    at i (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at Function.ready (jquery.min.js:2)
    at HTMLDocument.J (jquery.min.js:2)

위 콘솔을 뵈면 해당 html파일 즉, sample16.html 파일의 11번째 줄에 있는 live가 function이 

아니라는 말인데요..

저 원문에서 live가 11번째 줄에 있습니다. 

제이쿼리 버전을 최신이나 다른 버전으로도 바꿔봐도 계속 상기에 있는 콘솔오류가 납니다..-.-;;

책이 잘못된 것인지...사실, 1년전에 공부했던 책으로 다시 복습중인데

그때는 안그랬는데. 지금은 이런 오류들이 발생됩니다.

원인이 무엇인가요..? -.-;;;

|

답변 5개 / 댓글 5개

채택된 답변
+20 포인트
2019-01-07 (월) 20:26:49

https://api.jquery.com/live/#live-events-handler

1.7 버전에서 deprecated되었다가 1.9 버전에서 완전히 removed됩니다.

지금 사용하시는 버전이 1.12.4니까 live 메소드는 작동 안 하는 게 정상입니다.

여담으로 jquery 1.7 이전에는 live, bind 따로 사용을 했는데 그 이후로 on 메소드가 저 둘의 기능을 합쳐서 나왔습니다.

그래서 지금은 live, bind 이런 건 쓰실 필요가 없고 on만 사용하시면 됩니다.

live 메소드를 계속 사용하시려면 jquery는 1.7 이하로 사용하셔야 합니다.

답변에 대한 댓글 1개

아. 감사드립니다. -.-;

live는 더이상 상위 버전에서는 지원하지 않습니다.

on으로대체 되었습니다.

on을 사용하세요.

답변에 대한 댓글 1개

아. 감사드립니다. -.-;

1.12 버전대에서는 

live() 대신 on()을 쓰셔야 합니다.

문법도 조금 다르니, 찾아보시기 바랍니다.

답변에 대한 댓글 1개

아. 감사드립니다. -.-;

live 는 jquery 1.9 버전부터 폐지되었습니다 

on 으로 사용하시고 꼭  live 를 사용하시려면 jquery 1.9 이하버전으로 사용하세요 

답변에 대한 댓글 1개

아. 감사드립니다. -.-;

http://api.jquery.com/live/

보시면 j쿼리 1,3에 추가되어서 1.8버전에 삭제되었다고 나오네요. 

그 사이 버전을 사용하시거나, 아니면 대체함수를 사용하셔야 합니다

답변에 대한 댓글 1개

아. 감사드립니다. -.-;

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