ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [jQuery] 001. jQuery 의 개요
    SsY/Class 2023. 6. 12. 18:00
    728x90
    jQuery (제이쿼리)의 개요
    ■■■ jQuery(제이쿼리) ■■■
    ○ 개요
    - jQuery 는 빠르고 간결한 Javascript Library
      //-- javascript 로 할 수 있는 것은 모두 jQuery 로 가능 (그 반대도 동일)
    - HTML Document traversing, 이벤트 처리, 애니메이션, 
      AJAX 를 단순화하여 빠른 웹 개발을 가능하게 한다.
      //-- AJAX : javascript로 비동기 통신기반으로 일종의 기존의 기술을 묶어서 처리하는 개념
      //--        별도의 독립적이고 새로운 기술인 것은 아님
      //--        XML, HTML, Https 들을 묶어서 사용하는 것..?
    - CSS 규격 지원 : CSS 1~3 와 기본 XPath 지원.
    - 다양한 브라우저 지원
    - 경량 파일(약 90KB 수준의 파일크기)
    - John Resig 에 의해 개발 
    
    ○ jQuery 를 사용함으로써 얻을 수 있는 장점
    - HTML 과 DOM, CSS 의 변경이 간편하다.
    - 이벤트 처리가 간편하다.
    - 애니메이션 같은 각종 효과를 적용하기 쉽다.
    - AJAX, JSON 과 같은 처리가 간편하다
    //-- XML : 구조화 된 데이터를 표현하는데 특화된 것
    //-- JSON : XML 의 단점
    //         (실제 안에 들어있는 데이터 ex) 240(신발사이즈)일 때 다만 240 을 수식하는 ~의 신발사이즈 라고 하는 것이 용량을 더 차지함)를
    //         좀 보완한 기술로 알아둘 것 (구조적인 표현을 잘해야 함)
    <!--
    과거에 클라이언트 입장에서(즉, 브라우저 상태에 따라서)
    <!--
       자바 스크립트 코드
    //-->
    자바스크립트가 돌아가는 브라우저 : 코드를 인식
    자바스크립트가 호환되지 않는 브라우저 : html주석 처리 됨
    -->
    - 브라우저 호환성을 해결할 수 있다.
    ---------------------------------------------------------------------------------------------
    ○ jQuery 다운로드 및 라이브러리 포함
    //-- 버전이 높을수록 고도화 된 것은 아니고,
    //-- 필요한 기능이 어느 버전에 있느냐에 따라서 해당 버전을 사용하게 되는 것
    //-- 소수점은 딱히 신경쓰지 않아도 되며, 사용한 것에 따라 x 점 대~ 사용 참조 같은 식으로 사용
    - jQuery 다운로드 --// js 파일 을 다운로드 받는 것~
      http://jquery.com/
    
    - jQuery 를 사용하기 위한 라이브러리 포함
    //-- 1번으로 사용하면 네트워크에 연결되지않아도 사용가능 (2번은 항상 네트워크 필요)
    
      1. 로컬 PC 저장소에 물리적으로 존재할 때
         (즉, 제이쿼리 파일을 다운로드 받은 경우, 
          특정 디렉터리 안에 들어있는 경우 그 경로까지 지정해 주어야 한다.)
         <script type="text/javascript" src="jquery-x.x.x.js"></script>
      2. CDN 으로 직접 경로 지정
         <script type="text/javascript" src="http://code.jquery.com/jquery.x.x.x.js"></script>
    
    - jQuery UI 를 사용하기 위한 CSS 및 라이브러리 포함.
    //-- 클라이언트 파트(웹 브라우저)에서 보여지는 UI 를 쉽게 하도록 
       1.로컬 PC  저장소에 물리적으로 존재할 때
         <link rel="stylesheet" href="jquery-ui.css"></link>
         <script type="text/javascript" src="jquery-x.x.x.js"></script>
         <script type="text/javascript" src="jquery-ui-x.x.x.custom.min.js"></script>
    
       2.CDN 으로 직접 경로 지정
         <link rel="stylesheet" href="http://code.jquery.com/x.x.x/base...css"></link>
         <script type="text/javascript" src="http://code.jquery.com/jquery....js"></script>
         <script type="text/javascript" src="http://code.jquery.com/ui/...-ui.js"></script>
    ---------------------------------------------------------------------------------------------
    ○ jQuery 의 사용방법 (2가지)
      1. http://jquery.com/ 에서 파일을 다운로드 하여 사용하는 방법
         ※ 다운로드 받을 수 있는 종류
           - 『prodction』 버전
             : 소스를 압축해서(불필요한 공백 및 개행 제거)
               웹 서버에서 빠르게 실행할 수 있도록 경량화/최소화 한 버전
           - 『development』 버전
             : 테스트나 디버깅 또는 코드에 대한 분석을 위해
               압축을 하지 않고 가독성을 높여 놓은 버전
               (공백 및 개행 처리가 포함되어 있음)
    
      2. CDN (Content Delivery Network) 을 통해 사용하는 방법
         ※ CDN : 웹 페이지를 실행할 때 마다 공개 서버에서 네트워크를 통해
                  jQuery 를 다운로드 받을 수 있도록 해주는 개념
         별도의 파일을 다운로드 받을 필요 없이
         『<script type="text/javascript" src="http://code.jquery.com/jquery-x.x.x.js"></script>』
         와 같은 구문을 통해 참조하여 포함시키도록 처리한다.
    ---------------------------------------------------------------------------------------------
    ○ jQuery 참조 및 학습 사이트
    - http://try.jquery.com/
    - http://learn.jquery.com/
    - http://www.w3schools.com/jquery/
    
    ※ jQuery 는 자바스크립트 라이브러리 일종이다.
       『wirrte less, do more』를 통해 알 수 있듯이
       기존 자바스크립트 문장을 더 적은 라인으로 줄일 수 있다.
       또한, 라이브러리 자체도 가볍고 설치도 필요없이 사용할 수 있다.
    ---------------------------------------------------------------------------------------------
    ○ jQuery 의 대표적인 선택자 3가지
    - 타입 선택자(요소 선택자 : 엘리먼트 선택자)
      페이지 상의 모든 <p> 요소를 선택하고자 할 경우 다음과 같이 기술하면 된다.
      『$("p")』
    - 클래스 선택자
      <p class="test"> 와 같이 클래스가 test 인 요소를 선택하고자 할 경우
      다음과 같이 기술하면 된다.
      『$(".test")』
    - 아이디 선택자
      <p id="test"> 와 같이 아이디가 test 인 요소를 선택하고자 할 경우
      다음과 같이 기술하면 된다.
      『$("#test")』
    
    ○ 그 외 선택자
    - 『$("*")』
      : 모든 요소를 선택한다.
    - 『$(this)』
      : 현재 요소를 선택한다. (이 선택자는 따옴표 없음에 유의할 것)
    - 『$("div span")』
      : <div> 요소 안에 있는 <span>요소를 선택한다.
    - 『$("p.test")』
      : <p> 요소 중에서 test 클래스인 요소를 선택한다.
    - 『$("p:first")』
      : 첫 번째 <p> 요소를 선택한다.
    - 『$("ul li:first")』
      : 첫 번째 <ul>에서 첫 번째 <li> 요소를 선택한다.
    - 『$("ul li:first-child")』
      : 모든 <ul>에서 첫 번째 <li> 요소를 선택한다.
    - 『$("[href]")』
      : href 속성을 가진 모든 요소들을 선택한다.
    - 『$("a[target='_blank']")』
      : 모든 <a> 요소들 중 target 속성에서 _blank 값을 가진 것들을 선택한다.
    - 『$("a[target!='_blank']")』
      : 위와 반대로 _blank 값이 없는 것들을 선택한다.
    - 『$(":button")』
      : 모든 <button> 요소와 모든 <input type="button"> 을 선택한다.
    - 『$("tr:even")』
      : 모든 짝수 <tr> 요소를 선택한다.
    - 『$("tr:odd")』
      : 모든 홀수 <tr> 요소를 선택한다.
    - 『$("ul > li")』
      : <ul> 요소에서 직계 자손인 <li> 요소만 선택한다.
        (다중 리스트 구조로 되어 있을 때...)


    관찰 실습
    JqueryApp
    (style.css 접은글)
    더보기
    ul#navigation 
    {
        position: fixed;
        margin: 0px;
        padding: 0px;
        top: 0px;
       
        list-style: none;
        z-index:999999;
        width:721px;
    }
    
    ul#navigation li 
    {
        width: 103px;
        display:inline;
        float:left;    
    }
    
    ul#navigation li a 
    {
        display: block;
        float:left;
        margin-top: -2px;
        width: 100px;
        height: 25px;
        background-color:#E7F2F9;
        background-repeat:no-repeat;
        background-position:50% 10px;
        border:1px solid #BDDCEF;
        -moz-border-radius:0px 0px 10px 10px;
        -webkit-border-bottom-right-radius: 10px;
        -webkit-border-bottom-left-radius: 10px;
        -khtml-border-bottom-right-radius: 10px;
        -khtml-border-bottom-left-radius: 10px;
        text-decoration:none;
        text-align:center;
        padding-top:80px;
        opacity: 0.7;
        filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);  
    }
    
    ul#navigation li a:hover
    {
         background-color:#CAE3F2;
    }
    
    ul#navigation li a span
    {
        letter-spacing:2px;
        font-size:11px;
        color:#60ACD8;
        text-shadow: 0 -1px 1px #fff;      
    }
    
    ul#navigation .home a
    {
        background-image: url(../images/home.png);
    }
    
    ul#navigation .about a      
    {
        background-image: url(../images/id_card.png);
    }
    
    ul#navigation .search a      
    {
        background-image: url(../images/search.png);
    }
    
    ul#navigation .podcasts a      
    {
        background-image: url(../images/ipod.png);
    }
    
    ul#navigation .rssfeed a   
    {
        background-image: url(../images/rss.png);
    }
    
    ul#navigation .photos a     
    {
        background-image: url(../images/camera.png);
    }
    
    ul#navigation .contact a    
    {
        background-image: url(../images/mail.png);
    }
    • JQTest01
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JQTest01.html</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <!-- 
    가장 범용적으로 사용되는 라이브러리 CDN 방식 주소
    주소를 직접 브라우저 주소창에 검색했을 때, 소스가 나오지 않는다면 직접 다운받아서 입력해야함 
    -->
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    <!-- 
    해당 구문 입력 전 까지는 jQuery 사용 불가능
    별도의 script 단을 구성하여 작성을 해야한다
    위의 script 단 (문 번호 11번) 은 이미 자체로 완전하며 끝난 구문이다.
    사이에 비어보이는 곳에 해당 주소의 소스코드가 들어가게 되는 것
    -->
    <script type="text/javascript">
    // 관찰
    	// anonymous function 익명함수
    	$(function()
    	{
    		var d=300;
    		
    		// 메소드 내부에서 다시 익명함수 정의 가능
    		$("#navigation a").each(function()          
    		{
    			$(this).stop().animate({"marginTop":"-80px"}, d+=150);
    		});
    		
    		$("#navigation > li").hover(function()
    		{
    			$("a", $(this)).stop().animate({"marginTop":"-2px"},10);
    		}
    		, function()
    		{
    			$("a", $(this)).stop().animate({"marginTop":"-80px"},900);
    		});
    	});
    
    </script>
    
    
    </head>
    <body>
    
    <table>
    	<tr>
    		<td>
    			<ul id="navigation">
    				<li class="home"><a href="#"><span>Home</span></a></li>
    				<li class="about"><a href="#"><span>About</span></a></li>
    				<li class="search"><a href="#"><span>Search</span></a></li>
    				<li class="podcasts"><a href="#"><span>Podcasts</span></a></li>
    				<li class="rssfeed"><a href="#"><span>Rss Feed</span></a></li>
    				<li class="photos"><a href="#"><span>Photos</span></a></li>
    				<li class="contact"><a href="#"><span>Contact</span></a></li>
    			</ul>
    		</td>
    	</tr>
    </table>
    
    </body>
    </html>

    • JQTest02
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JQTest02.html</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <style type="text/css">
    	.item
    	{
    		border : solid 2px red;
    		color : white;
    		background : black;
    	}
    </style>
    
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    
    <script type="text/javascript">
    
    	/*
    	function test()
    	{
    		alert("함수 호출 확인");
    	}
    	*/
    	
    	//jQuery 기본함수
    	
    	//jquery();		
    	//jquery(document).ready();	//-- 위와 동일한 구문
    	//-- jquery 라는 말이 반복 -> 줄여서 $ 로 씀
    	//$(document).ready();	//-- (document).ready 도 기본적으로 사용되기 때문에 생략되게 함
    	//$();
    	//-- javascript 엔진에 의해서 해당 페이지가 요청되면 바로 탑재됨		
    	
    	/*
    	//-- 호출하지 않고 기능하게만 하기 위해서 이름 없는 함수 정의
    	$(document).ready(function()
    	{
    		alert("함수 호출 확인");
    		// ※ 우리가.. 도는 이 페이지를 이용하는 사용자가
    		//    뭔가 건드리지 않아도(특별한 이벤트를 발생시키지 않아도)
    		//    자동으로 처리할 수 있는 영역 구성
    		
    	});
    	*/
    	
    	/*
    	$(function()
    	{
    		alert("함수 호출 확인");
    		// ※ 우리가.. 도는 이 페이지를 이용하는 사용자가
    		//    뭔가 건드리지 않아도(특별한 이벤트를 발생시키지 않아도)
    		//    자동으로 처리할 수 있는 영역 구성
    	});
    	*/
    	
    	$(function()
    	{
    		/*
    		//alert("함수 호출 확인");
    
    		//$("h1").click(h1이 클릭되었을 때 수행되어야 할 기능, 동작, 행위);
    		//                           ↓
    		//$("h1").click(h1이 클릭되었을 호출되어야 할 함수 정의);
    		//                           ↓
    		//$("h1").click(이름이 필요없는 함수 정의);
    
    		// 이전과는 달리 원격지에서 행동 -> ~ 하겠다 하는 것
    		$("h1").click(function()
    		{
    			//alert("돈 땃쥐 미!");
    			
    			//alert($(this).html());
    			//     ------- 선택된 해당 객체 -> 즉, 클릭된 h1 태그 객체의 html 을 반환
    			
    			//$(this).html("어떻게 될까요?");
    			// 선택된 해당 객체의 글이 () 괄호 안의 내용으로 변경 됨
    			
    			$(this).html("★"+$(this).html()+"★");
    			// 클릭을 하면 할수록 별의 갯수가 늘어감
    		});
    		*/
    
    		/*
    		//$("h1").on("click", 기능);
    		$("h1").on("click", function()
    		{
    			//alert("클릭");
    			//alert($(this).html());
    			$(this).html($(this).html()+"굿");
    		});
    		*/
    		
    		//$("h1").one("click", 기능);
    		//$("h1").one("click", 함수정의);
    		//$("h1").one("click", 함수호출);
    		// 기능 부분에 함수 정의뿐 아니라, 함수호출도 가능
    		/*
    		$("h1").one("click", function() 	// 한 번만 실행
    		{
    			//alert("클릭");		
    			//alert($(this).html());		
    	
    			//$(this).html(기능);
    			$(this).html(function(index, html)
    			{
    				//alert(html);
    				//alert(index);
    				return html + "★";
    			});
    			
    		});
    		*/
    		
    		// javascript 에서 다중 속성을 표기할 때
    		// {속성명:속성값, 속성명:속성값, 속성명:속성값, ...}  <- JSON 표기법
    		
    		//$("h1").on({이벤트1:기능1, 이벤트2:기능2, ...});
    
    		/*
    		$("h1").on(
    		{
    			이벤트1:기능1, 이벤트2:기능2			
    		});
    		*/
    		/*
    		$("h1").on(
    		{
    			// mouseenter : 어찌하겠다. → 마우스 커서 진입할 때
    			// mouseleave : 저찌하겠다. → 마우스 커서 빠져나올 때 (떠날 때)
    			mouseenter:function() {기능구현내용;}
    			, mouseleave:function() {기능구현내용;}
    		});
    		*/
    		/*
    		$("h1").on(
    		{
    			mouseenter:function() {$(this).addClass("item");}
    			, mouseleave:function() {$(this).removeClass("item");}
    		});
    		*/
    		/*
    		$("h1").on(
    		{
    			mouseenter:function() 
    			{
    				$(this).addClass("item");
    			}
    			, mouseleave:function() 
    			{
    				$(this).removeClass("item");
    			}
    		});
    		*/	
    		
    		// hover는 mouseenter, mouseleave 를 둘다 포함하는 기능
    		// $("h1").hover(기능);
    		/*
    		$("h1").hover(function()
    		{
    			$(this).addClass("item");
    		});
    		*/
    		
    		$("h1").hover(function()
    		{
    			$(this).addClass("item");
    		}
    		, function()
    		{
    			$(this).removeClass("item");
    		});
    		
    	});
    	
    </script>
    
    </head>
    <body>
    
    <!-- <h1 onclick="test()">이름</h1> -->
    <h1>이름</h1>
    <h1>땃쥐</h1>
    <h1>콩쥐</h1>
    <h1>팥쥐</h1>
    
    </body>
    </html>

    • JQTest03
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JQTest03.html</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <style type="text/css">
    	*
    	{
    		margin: 0px;
    		padding: 0px;
    	}
    	div
    	{
    		margin: 5px;
    		padding: 3px;
    		border: 3px solid black;
    		border-radius: 10px;
    	}
    </style>
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    <script type="text/javascript">
    	
    	// alert("확인"); //-- 실행 안 됨
    	
    	// $();  //-- 아래와 동일
    
    	// 아래 내용이 렌더링 되기 전에 먼저 해당 함수가 먼저 뜨는 것 관찰
    	// ready 가 되면 해당 함수를 운용해라~
    	$(document).ready(function()
    	{
    		//alert("확인");
    		
    		// 자바스크립트에 의해 호출 된 것 -- 우리가 호출한 것이 X
    		//$("div").click(기능);
    		$("div").click(function()
    		{
    			//alert("확인");
    			
    			//alert($(this).html());	//-- div 내에 여러 개가 있을 경우 태그 까지 전부 다 확인 됨..
    			
    			//alert($(this).text());	//-- div 내에 여러 개가 있을 경우 태그 제외 후 모든 내용 확인 됨..
    			
    			//alert($("h1").text());	//-- div 태그 내의 모든 h1 태그 내용들 전부 확인 됨
    			
    			//alert($("p").text());		//-- div 태그 내의 모든 p 태그 내용들 전부 확인 됨
    			
    			//alert($("h1", this).text());	//-- 선택된 div태그 내의 h1 태그 내용 확인 됨
    			
    			//alert($("p",this).text());	//-- 선택된 div태그 내의 p 태그 내용 확인 됨
    			
    			var h1 = $("h1", this).text();
    			var p = $("p", this).text();
    			
    			alert(h1+"/"+p);	//-- A강의실/JAVA 수업 중 
    			
    		});
    		
    	});
    	
    	
    	
    </script>
    </head>
    <body>
    
    <div>
    	<h1>A강의실</h1>
    	<p>JAVA 수업 중</p>
    </div>
    
    <div>
    	<h1>B강의실</h1>
    	<p>JQUERY 수업 중</p>
    </div>
    
    <div>
    	<h1>C강의실</h1>
    	<p>ORACLE 수업 중</p>
    </div>
    
    <div>
    	<h1>D강의실</h1>
    	<p>ASP 수업 중</p>
    </div>
    
    <div>
    	<h1>E강의실</h1>
    	<p>JSP 수업 중</p>
    </div>
    
    <div>
    	<h1>F강의실</h1>
    	<p>PHP 수업 중</p>
    </div>
    
    </body>
    </html>

     

    728x90
Designed by planet-si