출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]

addClass() removeClass() / c대문자

문서 객체에 클래스 속성 추가 / 제거

<!DOCTYPE html>
<html lang="">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jquery_DOM / 문서객체 컨트롤</title>


    <!--제이쿼리 라이브러리 로드-->
    <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>

    <script>
        $(document).ready(function() {

            $('button').first().click(function() {

                $('h1').addClass('float_left');

            });
            $('button').last().click(function() {
                $('h1').removeClass('float_left');
            });



        });
    </script>
    <style>
        h1 {
            border: 5px solid #ddd;
        }

        .float_left {
            float: left;
            widows: 32%;
        }
    </style>
</head>

<body>

    <h1> 네이버 </h1>
    <h1> 카카오 </h1>
    <h1> 페이스북 </h1>

    <button>변경</button><button>초기화</button>
</body></html>

 

 

attr()

문서 객체의 클래스 속성 검사 및 추가 ( 반환 & 설정 / get & set )

 

        $(document).ready(function() {
            $('button').first().click(function() {                
            	$('img').attr('src', '../image/tae2.jpg')
            });
            $('button').last().click(function() {          
                $('img').attr('src', '../image/tae1.jpg')
            });
            
            // 속성값을 반환 : get > attr('속성이름)
            var img_path = $('img').attr('src');
            console.log('img_path >', img_path);
            
            // 속성값을 설정 : set > attr('속성이름', 속성값)
            $('img').attr('width', 300);
            
        });

 

        $(document).ready(function() {
            // 속성값을 설정 : set > attr('속성이름', 함수())
            // 함수의 반환값은 속성에 적용할 데이터를 반환
            $('img').attr('width', function(index) {
                return (index + 1) * 100;
            });

        });

 

 

        $(document).ready(function() {
            // 속성값을 설정 : set > attr({속성이름:속성값 , 속성이름:속성값...})
            $('img').attr({
               width : function(index){
                   return (index+1)*100;
               },
                height:100
                                
            });
            
        });

 

 

 

removeAttr()

 

        $(document).ready(function() {

            $('button').first().click(function() {
                $('img').removeAttr('height');
                

            });
            $('button').last().click(function() {
            
            });
        });

css()

문서 객체의 스타일 검사 및 추가

    <script>
        $(document).ready(function() {

            var colors= ['red', 'blue','green'];
            
            $('h1').css('color',function(index){
                return colors[index];    
            });
            
        });
    </script>
    <style>
        h1 {
            border: 5px solid #ddd;
        }

        .float_left {
            float: left;
            widows: 32%;
        }
    </style>
</head>

<body>    
    <h1> 네이버 </h1>
    <h1> 카카오 </h1>
    <h1> 페이스북 </h1>
</body></html>

 

html = 1 > 2 > 3이라면 

                $('body').html($('body').html()+html); 

 

1) 뒤에 차례로 붙이기

[ body ] +  1 2 3

 

                $('body').html(html+$('body').html());

2) 역순으로 넣기 (위에 생김)

3 2 1  + [ body ]

- $.parseXML( ) 메서드와 each( ) 메서드, find() 메서드

 

        $(document).ready(function() {
            
            // xml 문서 구조의 문자열 
            var xmlStr = '';
            xmlStr += '<links>';
            xmlStr += '     <link>';
            xmlStr += '         <name>네이버</name>';            
            xmlStr += '         <url>http://www.naver.com</url>';            
            xmlStr += '     </link>';
            xmlStr += '     <link>';
            xmlStr += '         <name>구글</name>';            
            xmlStr += '         <url>http://www.google.com</url>';            
            xmlStr += '     </link>';
            xmlStr += '     <link>';
            xmlStr += '         <name>다음</name>';            
            xmlStr += '         <url>http://www.daum.net</url>';            
            xmlStr += '     </link>';
            xmlStr += '</links>';
            
            // 문자열 > xml 문서 객체로 만듦
            var xmlDoc = $.parseXML(xmlStr);
            
            // xml문서 객체 > 제이쿼리 객체로 만듦 > find() 사용 가능
            $(xmlDoc).find('link').each(function(index){
                // <link></link>가 하나의 this가 된다.
                var name = $(this).find('name').text();
                var url = $(this).find('url').text();
                
                var html ='';
                html += '<div class="card">';
                html += '   <h2>'+name+'</h2>';
                html += '   <a href="'+url+'">방문하기</a>';
                html += '</div>';
                
                $('body').html(html+$('body').html());
            });
            
      
        });
    <style>
        *{
            margin: 0px;
            padding: 0px;
        }
        div.card{
            border : 1px solid #aaa;
            width: 30%;
            float : left;
            margin: 5px;
        }
        
        
        div.card > h2 {
            background-color: palevioletred;            
            text-align: center;
        }
        
        div.card > a{
            display: block;
            text-align: center;
            height: 30px;
            line-height: 30px;
            text-decoration: none;
            color : black;
            background-color: pink;
        }
    </style>

기본 필터 메서드 filter(), filter(function(){})

    <script>
        $(document).ready(function() {

//            $('h3:even').css({
//                background: 'black',
//                color: 'orange'
//            });

            $('h3').filter(':even').css({
                background: 'black',
                color: 'orange'
            })

        });
    </script>


</head>

<body>

    <h3> header3-0 </h3>
    <h3> header3-1 </h3>
    <h3> header3-2 </h3>
    <h3> header3-3 </h3>
    <h3> header3-4 </h3>
    <h3> header3-5 </h3>
    <h3> header3-6 </h3>
    <h3> header3-7 </h3>


</body></html>

 

        $(document).ready(function() {

            $('h3').filter(':even').css({
                background: 'black',
                color: 'orange'
            })

            $('h3').filter(function(index) {
                return index % 3 == 0;
            }).css({
                background: 'black',
                color: 'red'
            });

        });

 

 

end()

	<script>
		$(document).ready(function() {

            //end (), filter를 이용한 선택의 한단계 위로 이동.
            $('h1').css('background-color','orange')
            .filter(':even').css('color','white')
            .end().filter(':odd').css('color','red');
            
        });
    </script>


</head>

<body>

    <h1> header1-0 </h1>
    <h1> header1-1 </h1>
    <h1> header1-2 </h1>
    <h1> header1-3 </h1>
    <h1> header1-4 </h1>
    <h1> header1-5 </h1>
    <h1> header1-6 </h1>
    <h1> header1-7 </h1>

 

특정 위치의 문서 객체 선택 eq(), first(), last()

 

        $(document).ready(function() {
            
            $('h1').eq(0).css('background','orange');
            $('h1').eq(-3).css('background','orange');
            $('h1').last().css('background','orange');

        });

 

add()

- add ( ) 메서드를 사용하면 현재 선택한 문서 객체의 범위를 확장할 수 있음

        $(document).ready(function() {

            $('h1').css('border','5px solid #333')
            .add('h3').css('color','blue');

        });

each$.each( ) 메서드의 콜백 함수

each() > 하나의 행을 다루는 핸들러 / 함수

        $(document).ready(function() {
            // 배열의 반복 처리를 위한 each 메소드
            // $.each(배열의 원본, callbck : 하나의 행을 처리하는 함수)
            
            // 배열 생성
            var links = [
                {name:'네이버', url:'http://www.naver.com'},
                {name:'다음', url:'http://www.daum.net'},
                {name:'구글', url:'http://www.google.com'},
            ];
            
            var output='';
            
            $.each(links, function(index,item){
                console.log(index, item);
                
                output += '<h1><a href="'+item.url+'">'+item.name+'</a></h1>';
            })     
                document.body.innerHTML +=output;
           
            
        });

 

addclass() 메서드

 

        $(document).ready(function() {
            $('h1').addClass('title');

            $('h1').each(function(index, item) {
                if (index % 2 == 0) {
                    $(item).css('color', 'red');
                }
            });

        });
    </script>
    <style>
        .title {
            background-color: beige;
            font-style: italic;
        }
    </style>
</head>

<body>

    <h1> h1 - 1 </h1>
    <h1> h1 - 2 </h1>
    <h1> h1 - 3 </h1>
    <h1> h1 - 4 </h1>
    <h1> h1 - 5 </h1>

        $(document).ready(function() {
//            $('h1').addClass('title');

            $('h1').each(function(index, item) {
                if (index % 2 == 0) {
                    /*$(item).css('color', 'red');*/
                    $(item).addClass('title')
                }
            });

        });
    </script>
    <style>
        .title {
            background-color: beige;
            font-style: italic;
        }
    </style>
</head>

<body>

    <h1> h1 - 1 </h1>
    <h1> h1 - 2 </h1>
    <h1> h1 - 3 </h1>
    <h1> h1 - 4 </h1>
    <h1> h1 - 5 </h1>

minified

 

jQuery Core – All Versions | jQuery CDN

jQuery Core – All Versions jQuery Core & Migrate - Git Builds UNSTABLE, NOT FOR PRODUCTION jQuery Core - All 3.x Versions jQuery Core 3.5.1 - uncompressed, minified, slim, slim minified jQuery Core 3.5.0 - uncompressed, minified, slim, slim minified jQue

code.jquery.com

 

 

***

            $('body').html('abc') 
            // abc만 출력됨(덮어쓰기)
            
            $('body').html(
                $('body').html()+output
            );            
            //document.body.innerHTML +=output;와 같다
           

 

 

 

$(document).ready( )

- jQuery를 사용한 모든 웹 페이지는 다음 코드로 시작

 

$(document).ready( )

- 이벤트 연결

 

        // 제이쿼리 객체를 만들고 객체의 메소드를 사용하는 형태
        // jquery(자바스크립트 객체 또는 선택자) : jquery 객체 생성
        $(document).ready(function(){
            alert('1');
        });
        
        $(document).ready(function(){
            alert('2');
        });
        
        $(document).ready(function(){
            alert('3');
        });
        

 

 

기본 선택자

- jQuery 메서드의 가장 기본적인 형태
- 선택자는 jQuery에서 가장 중요한 역할

 

    <script>
        //선택자로 제이쿼리 객체 생성 : $('선택자')
        $(document).ready(function(){
            console.log('onload=ready()')
            $('*').css('color','red');            
        });
        
                        
    </script>
</head>

<body>
    
    <h1>jquery test</h1>
    <p>제이쿼리 테스트</p>   
    
    
    
    
</body>

</html>

 

 

속성 선택자

		$(document).ready(function(){
            // 속성타입으로 선택
            $('input[type=text]').css('padding',10);
            $('input:text').css('color','pink');
            
            $('input:button').css('background-color', 'black');
        });
        
        //
        
    <input type="text"><br><br>
    <input type="button" value="버튼"><br>

 

필터 선택자

입력 양식 필터 선택자 - 필터 선택자는 기본 선택자 뒤에 사용

<script>
        $(document).ready(function() {
            // select에서 선택한 항목
            var value = $('select>option:selected').val(); // get 기능
            console.log(value);

            setTimeout(function() {
                var value = $('select>option:selected').val();
                console.log(value);
            }, 3 * 1000)
        });
    </script>
</head>

<body>

    <select>
        <option>2021</option>
        <option>2020</option>
    </select>

 

위치 필터 선택자

 <script>
        $(document).ready(function() {
            $('table tr:odd').css('background','pink');
            $('table tr:even').css('background','black');
            
            $('table tr:first').css('background','blue');
            $('table tr:last').css('background','green');            
        });
    </script>
</head>

<body>

    <table border="1" style="width: 400px">
        <tr>
            <td>1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>2</td>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
            <td>3</td>
        </tr>
        <tr>
            <td>4</td>
            <td>4</td>
        </tr>
        <tr>
            <td>5</td>
            <td>5</td>
        </tr>
        <tr>
            <td>6</td>
            <td>6</td>
        </tr>
        <tr>
            <td>7</td>
            <td>7</td>
        </tr>
        <tr>
            <td>8</td>
            <td>8</td>
        </tr>
        

    </table>

test1.csv
0.00MB
test2.csv
0.00MB

# Chapter09_02
# csv 파일 읽기 및 쓰기

# csv : meme - text/csv;

import csv

# 예제1
with open('./resource/test1.csv','r') as f :
    reader = csv.reader(f)
    next(reader) #header (첫줄) skip

    # 객체확인
    print(reader)

    # 타입확인
    print(type(reader))

    # 속성확인
    print(dir(reader))
    print()

    # 내용 출력
    for c in reader :
        #print(c)
        #print(type(c)) #list~~
        print(''.join(c))


# 예제2
with open('./resource/test2.csv','r') as f :
    reader = csv.reader(f,delimiter='|') # 구분자

    for c in reader:
        print(c)
        # 리스트안에 각각 두개 ['나라','약자']로 가져옴

# 예제3
with open('./resource/test1.csv','r') as f :
    reader = csv.DictReader(f)

    print(reader)
    print(type(reader))
    print(dir(reader))

    for c in reader:
        #print(c) #{'Name|Code': 'Zimbabwe|ZW'}
        for k,v in c.items():
            print(k,v)
        print('--------------------')


# 예제4
w = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20,21]]
with open('./resource/write1.csv', 'w', encoding='utf-8') as f:
    print(dir(csv))
    wt=csv.writer(f)

    #dic확인
    #print(dir(wt))

    for v in w :
        wt.writerow(v) # 한줄씩 입력.row단위로.

# 예제5
with open('./resource/write2.csv', 'w', encoding='utf-8') as f:
    # 필드명
    fields = ['one', 'two','three']

    #DictWriter

    wt = csv.DictWriter(f, fieldnames=fields)
    #header Writer
    wt.writeheader()

    for v in w :
        wt.writerow({'one': v[0],'two':v[1],'three':v[2]})
# chapter09_01
# 파일 읽기 및 쓰기

# 읽기 모드 r 쓰기모드 w 추가모드 a 텍스트모드 t 바이너리모드 b
# 상대경로('../, ./') 절대 경로("C:\django\example..")

# 파일 읽기, 읽기 작업(read)
# 예제1)
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
#한글깨짐 방지

f = open('./resource/it_news.txt', 'r', encoding='UTF-8')

# 속성확인
print(dir(f))
# 인코딩 확인
print(f.encoding)
# 파일이름
print(f.name)
# 모드 학인
print(f.mode)

cts=f.read()
print(cts)

#반드시 clos
f.close()


print('--------------------------------------')

# 예제2
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    c = f.read()
    print(c)
    print(iter(c))
    print(list(c))
    # with문에서는 알아서 close해준다.

print('--------------------------------------')


# 예제3
# read() : 전체 읽기, read(10) : 10byte만 읽어옴
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    c = f.read(20)
    print(c)
    c = f.read(20)
    print(c) # 다음 20byte를 읽어봄. 내가 마지막에 어디까지 읽었는지 내부적으로 기억.
    c = f.read(20)
    print(c)
    f.seek(0,0) # 처음으로 from 0 to 0
    c = f.read(20)
    print(c)
print('--------------------------------------')

# 예제4
# readline : 한줄씩 읽기
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    line = f.readline()
    print(line)
    line = f.readline()
    print(line) #반복문 안에서 읽어오는 것이 좋다.
print('--------------------------------------')

# 예제5
# readlines : 전체를 읽은 후 라인 단위 리스트로 저장
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    cts = f.readlines()
    print(cts)
    print(cts[0])

    for c in cts :
        print(c, end='')

print('--------------------------------------')


# 파일쓰기 (write)

# 예제1
with open('./resource/contents1.txt', 'w') as f :
    f.write('I love Python\n')

# 예제2
with open('./resource/contents1.txt', 'a') as f :
    f.write('I love Python\n')       # w로하면 덮어쓰기 a 뒤에추가 (append)

# 예제3
# writelines : 리스트 > 파일로 한줄씩
with open('./resource/contents2.txt', 'w') as f :
    list=['orange\n', 'Apple\n', 'banana\n','melon\n']
    f.writelines(list)

# 예제4
with open('./resource/contents3.txt', 'w') as f :
    print('Test Text Write', file=f) #콘솔이 아니라, 파일로 출력
<!DOCTYPE html>
<html lang="">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Javascript Window Object</title>

    <script>

        window.onload = function() {
            
            // 삭제버튼 : 이벤트 설정
            document.querySelector('input[type=submit]').onclick = function(){
               
                alert('h1');
                
                // 삭제 대상 
                var remove_h1 = document.getElementById('header-1');
                
                // 삭제 대상을 포함하는 문서객체
                var parent = document.body;
                
                parent.removeChild(remove_h1);
                
                
            };
        };
    </script>


</head>

<body>

    <div id="header-1">1</div>
    <div id="header-2">2</div>

    <br>
    
    <input type="submit" value="H1-0 삭제">



</body></html>

문제발생, h1을 누르면 div영역도 같이 눌려진다.

<!DOCTYPE html>
<html lang="">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>이벤트 전달</title>
    
    <style>
    
        div{
            height: 300px;
            background-color: black;
        }
        
        h1{
            background-color: pink;
        }
    </style>
    
    <script>
    
        window.onload = function(){
            
            var div = document.querySelector('div');
            var h1 = document.querySelector('h1');
            
            div.onclick = function(){
                console.log('div 영역에 클릭이벤트 발생!');
            }
            h1.onclick = function(){
                console.log('h1 영역에 클릭이벤트 발생!');
            }
            
            
        };
    </script>
</head>

<body>
    
    <div>
    
        <h1> 클릭하세요 :) </h1>
    </div>
</body>
</html>

 

 

 

이벤트 객체의 stopPropagation() 메서드 사용!

익스플로러는 cancelBubble 속성을 true로 변경하는데 잘안쓰니까 패스..

<!DOCTYPE html>
<html lang="">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>이벤트 전달</title>
    
    <style>
    
        div{
            height: 300px;
            background-color: black;
        }
        
        h1{
            background-color: pink;
        }
    </style>
    
    <script>
    
        window.onload = function(){
            
            var div = document.querySelector('div');
            var h1 = document.querySelector('h1');
            
            div.onclick = function(){
                console.log('div 영역에 클릭이벤트 발생!');
            }
            h1.onclick = function(){
                console.log('h1 영역에 클릭이벤트 발생!');
            }
            
            h1.onclick = function(e){
                
                var event = e || window.event;
                console.log('h1 영역에 클릭이벤트 발생쓰!!!!!')
                
                if(event.stopPropagation){
                    event.stopPropagation();
                }
                
            };
            
        };
    </script>
</head>

<body>
    
    <div>
    
        <h1> 클릭하세요 :) </h1>
    </div>
</body>
</html>

+ Recent posts