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

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

QA

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

본문


<!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

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 이하로 사용하셔야 합니다.

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

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

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

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

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

1.12 버전대에서는 

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

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

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

on으로대체 되었습니다.

on을 사용하세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 24
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT