728x90

 

$(function() {

$('td').click(function(e){

console.log("event[표준객체]:"+e);

console.log("e.target[표준객체]:"+e.target);

console.log(e.target.firstChild.nodeValue);

console.log("this :"+this);

console.log(this.firstChild.nodeValue);

console.log("e.target[표준객체]--> jQuery객체의 text메소드 호출:"+$(e.target).text());

});

});

$(function); ==> window onload 시 function 등록 

 

javascript 표준객체에서는 jQuery의 함수를 사용할 수 없다.

jQuery 의 함수를 사용하려면 $()로 객체를 Wrapper 객체로 만들어주어야 한다. 

 

$('td').click(function); ==> td태그의 click 이벤트 리스너에 function 등록 

 

e = 발생 이벤트 

e.target = 이벤트가 발생한 객체

$(e.target) = 이벤트가 발생한 객체의 랩퍼 객체 

 

 

$('#txtInput').keyup(function(e){

console.log("key:"+e.key);

console.log("keyCode:"+e.keyCode);//ASCIIcode

$('#txtKeyCode').val(`${e.key}[${e.keyCode}]`);

});

키 이벤트의 프로퍼티 key, keyCode

 

key = 입력한 키

keyCode = 입력한 키의 아스키코드

 

key는 문자 뿐만아니라 enter, spacebar, shift, 등 모든 키를 받는다. 

 

$('').val() == Element.value 

val(); = get

val(param); = set param in element.value

 

 

$().text() == element.innerText

$().html() == element.innerHTML

$(e.target).html('jQuery에서 제공하는 Event 핸들링 메소드'+ ++clickCount);

 

$('#mouseArea').on('mouseenter mouseleave',function(){

if(e.type=='mouseenter'){

enterCount++;

}else if(e.type=='mouseleave'){

leaveCount++;

}

});

 

.on() 이벤트 바인딩 함수

지금까지 나온 .click(), .keyup() 등은 특정 이벤트를 지정하여 그 이벤트에 대해서만 처리하는 리스너를 만드는데

.on() 함수는 어떤 타입의 이벤트라도 처리할 수 있고, 여러 이벤트를 처리할 수도 있다.

 

위 예제는 mouseenter 또는 mouseleave 이벤트가 발생하면 실행할 함수를 정의했는데 e.type으로  이벤트의 타입을 

구분하고 각 이벤트마다 다른 처리를 하였다. 

 

on(event, [childSelector, data,] function) 

event와 event를 처리할 function이 필수 인자 

특정 자식객체에게만 접근할 때는 childSelector, function을 수행하는데 필요한  data가 있다면 data를 추가로 입력할 수 있다.

$('#btnAdd').click(function(){

let item_no =$('li').length;

$('ul').append(`<li>list item ${item_no}</li>`);

});

$('ul').on('click','li',function(e){

alert($(e.target).text());

});

 

버튼을 클릭하면 ul 자식으로 li객체가 생성된다. 

li객체는 최초 로딩때는 존재하지 않다가 ul 객체에 이벤트가 발생하면 동적으로 생성되는 객체이다. 

이렇게 동적으로 생성되는 객체에 이벤트 리스너를 등록하려면 on함수를 사용한다. 

$('ul').on('click','li',function(e){...});

ul객체에 click 이벤트를 등록함과 동시에 그 자식 li도 click 이벤트를 등록한다. 

 

 

일회용 이벤트 리스너 만들기

one() 함수 사용

$('li').one('click',function(e){

alert($(e.target).text());

});

한번 이벤트를 처리하고 나면 이벤트 리스너를 삭제하여 더이상 이벤트를 처리하지 않는다.

 

 

'Javascript' 카테고리의 다른 글

js 모듈 의존성 줄이기  (0) 2023.09.24
AJAX using JQuery  (0) 2023.09.24
Javascript this  (0) 2023.09.23
JQuery effect  (0) 2023.09.22
JQuery 입문  (1) 2023.09.22
728x90

자바스크립트에서 this 는 다른 언어와 다르게 작동한다.

this는 함수를 호출한 방법에 따라 다르게 결정된다.

 

let obj1={

'no':1,

'func1':function(){

console.log('obj1.func1 -->this:'+this.no);

}

}

obj1.func1();//1

ob1의 func1을 실행하면 obj1의 no인 1을 반환한다. 

 

let obj2={

'no':2,

'func2':function(){

console.log('obj2.func2 -->this:'+this.no);

}

}

 

this를 다른 문맥으로 옮기려면 call이나 apply 함수를 사용

obj1.func1.call(obj2);

--------func.call(obj1)----------
obj1.func1 -->this:2

obj2.func2.apply(obj1);

--------func.apply(obj1)----------
 obj2.func2 -->this:1

 

obj1.func1.call(window);

obj1.func1 -->this:undefined

 

this를 처음 호출 함수의 this로 고정 시키려면 bind 함수 사용 (바인드가 여러번 중첩되면 처음 적용된 바인드가 마지막까지 적용된다)

 

function f(){

return this.a;

}

var g = f.bind({ a: "bindedFirst" });

console.log(g()); // bindedFirst

 

var h = g.bind({ a: "bindedSecond" }); // bind는 한 번만 동작

console.log(h()); // bindedFirst

g(): bindedFirst
h(): bindedFirst

 

이벤트 리스너에서 this는 currentTarget

 

$('td').click(function(e){

console.log("this :"+this);

});

this   :[object HTMLTableCellElement]

  

'Javascript' 카테고리의 다른 글

AJAX using JQuery  (0) 2023.09.24
JQuery event  (0) 2023.09.23
JQuery effect  (0) 2023.09.22
JQuery 입문  (1) 2023.09.22
JQuery 이해하기  (0) 2023.09.22
728x90

$('h1,h3').next().hide();

h1태그와 h3 태그 다음 형제 노드인 div 태그를 숨긴다.

$('h1,h3').click(function(e){
      //$(e.target).next().toggle(500);
      $(e.target).next().fadeToggle(1000);
    });

클릭하면 div가 fadeToggle 천천히 생성된다. 

h1을 클릭했기 때문에 h1의 div의 자식인 h3가 생성되고 h3를 다시 클릭하면 h3의 div가 생성된다.

$('#logo').click(function(){
      $('#logo').animate({width:'50%',heigth:'50%'},2000);
      $('#logo').animate({width:'10%',heigth:'10%'},1900);
      $('#logo').animate({width:'300%',heigth:'300%'},400);
      $('#logo').animate({width:'100%',heigth:'100%'},400);
    });

.animate()

animate는 properties를 받는데 properties는 object이다. 

>> 

.animate({

property:value,

property:value

},duration, complete(){...})

 

 

 $(function () {
            // animate() 메서드를 사용합니다.
            $('div').animate({ left: '+=60' }, 2000);
            $('div').animate({ width: '+=60' }, 2000);
            $('div').animate({ height: '+=60' }, 2000);

            // 3초 후에 함수를 실행합니다.
           
            setTimeout(function () {
                // 애니메이션 큐를 제거합니다.
                $('div').clearQueue();
                // 효과 메서드를 사용합니다.
                $('div').hide();
            }, 3000);
        });

 

 

setTimeout(실행할 함수, 시간 설정)

 

clearQueue() 애니메이션 큐를 제거 (진행중인 애니메이션이 있다면 정지되고 큐도 제거된다.)

 

delay(ms).animate() ms초 후 실행 

 

$('.circle').approach({
                opacity: 0.2
            }, 200);

 접근할때 투명도 변경

 

 

$(document).ready(function () {
            $('div').hover(function () {
                $(this).addClass('reverse', 1000);
            }, function () {
                $(this).removeClass('reverse', 1000);
            });
        });

마우스가 위에 올라오면 .addClass('reverse',1000); 'reverse'클래스를 생성해주고 

'reverse'클래스가 생성되면 style에 설정된 코드에 따라 색상이 바뀌고 removeClass 함수가 실행되면 사라지면서 원래색상으로 돌아온다.

.reverse {
            color:White;
            background-color:gray;
        }

여기서 hover(function, function) 두개 함수가 인자로 들어갔는데

첫번째 함수는 hover 되었을때 실행되고 두번째함수는 hover out 되었을때 실행되는 함수이다.

 

'Javascript' 카테고리의 다른 글

JQuery event  (0) 2023.09.23
Javascript this  (0) 2023.09.23
JQuery 입문  (1) 2023.09.22
JQuery 이해하기  (0) 2023.09.22
Javascript defer  (0) 2023.09.21
728x90

JQuery 사용하기 

https://developers.google.com/speed/libraries#jquery

 

호스팅된 라이브러리  |  Hosted Libraries  |  Google for Developers

인기 있는 오픈소스 자바스크립트 라이브러리에 대해 Google에서 호스팅하는 콘텐츠 배포 네트워크에 포함된 라이브러리 목록을 가져옵니다.

developers.google.com

JQuery 사이트의 다운로드에서 Google CDN 링크 

JQuery의 3.x snippet의 

<script>태그를 복사해서 html의 head에 붙여준다.

jQuery()       [$()]

jQuery()는 팩토리 함수로 작업할 객체를 Wrapper객체로 만들어주는 공장의 역할을 한다. 

jQueryWrapper객체가 되면 다양한 프로퍼티를 다룰 수 있게 된다. 

jQuery() 대신 $() 를 사용할 수도 있다. 

$('h1').css('color','blue').text('바꿈');

$('h1')으로 h1태그 객체들을 Wrapper객체로 반환해주고 

css()함수로 Wrapper객체들의 css를 변경해주고 다시 반환해준다. 

반환받은 객체는 다시 text() 함수로 text가 변경되고 wrapper객체가 반환된다. 

jQuery는 기본적으로 factory 함수로 대부분 wrapper객체를 반환해주기 때문에 체이닝 코딩이 가능하다.

 

jQuery는 string(css selector, <tag>), object(DOM node), function을 인자로 받을 수 있다. 

 

대부분의 작업은 돔트리가 생성되어야 시작할 수 있는 작업이므로 

$(function(){

onload 이후 실행할 코드 

});

onload에 등록된 함수안에서 기술한다. 

$(function(){...});

 

let h2Text = $('h2').text();//get은 모든 텍스트, 자손의 텍스트를 누적해서 반환해줌

$('h2').text();

text() 함수에 인자가 없으면 get, 인자가 있으면 set을 해주는 함수 

 

$('.contents1').html("<u>jQuery는 오픈소스 </u>");//tag 파싱 함

.html()함수는 innerHTML 과 같은 역할을 하는 함수로 인자로 받은 내용을 html로 올려주어 만약, 태그가 있다면 parsing된다.

 

반면, .text()함수는  text로 받기 때문에 <>태그가 있어도 text 그대로 출력해준다. 

 

$('h2').text(function(elementIndex,previousText){//엘레먼트 인덱스와 변경전 기존 값을 인자로 줌, function실행 결과를 text에

if(index%2==0){

return `하하하하하[${index}]`;

}else{

return `glglglgl[${index}]`;

}

});

 

text()함수에 함수를 인자로 넣으면 요소의 인덱스와 그 텍스트를 사용할 수 있다. 

 

jQuery에 string을 인자로 넣을 때는 <tag>나 css Selector인데 css Selector라면 당연히 > . # 도 사용할 수 있다.

$('body > *').css('font-wegith','bold');

 

 

jQuery 함수 이용

 

each(array,function(arrayIndex,name){...}}

array를 받았을 경우 각 원소들을 순회하고 

객체를 받았을 경우 객체의 프로퍼티를 순회한다. 

$.each(memeberNameArray,function(index,name){//컬렉션일 경우 원소를 , 객체일 경우 객체의 프로퍼티를 순회

$('#memberNameList').append(`<li>${name}</li>`);

});

 

grep(array,function(name,index){...}) 

let filterNameArray=$.grep(memberNameArray,(name,index)=>name.startsWith('k'));//한줄이면 {}바디 필요 없고 return 한줄뿐이면 return 생략

function에서는 name의 원소를 받아서 true, false를 반환하고 true인 원소들만 새로운 배열로 모아서 반환해준다. 

이때, 기존의 배열은 변하지 않는다. 

each 함수는 함수에서 index, name의 순서로 인자로 받지만 

grep 함수는 함수에서 name, index의 순서로 인자를 받는다. 

 

sort([function(){...}])

sort()함수는 배열을 오름차순 정렬해준다. 

내림차순 정렬하려면 function을 정의해주거나 reverse()함수를 사용해서 오름차순된 배열을 뒤집어준다. 

 

내림차순 정렬 함수 정의하기 

memberScoreArray.sort((a,b)=>b-a);

연속한 원소를 인자로 받아서 두 원소를 뺏을때 양수이면 두 원소의 순서를 바꿔준다. 

뒤에 있는 원소인 b가 a보다 크면 바꿔줘야 내림차순으로 정렬되므로 b-a를 반환해주면 된다. 

memberArray.sort(function(member1,member2){

if(member1.id>member2.id)

return 1 ;

else return -1;

});

만약 객체를 정렬한다면 객체의 어떤 프로퍼티를 기준으로 정렬할지 정하고 그 프로퍼티의 대소를 비교하는 식을 세워주면 된다. 

string 프로퍼티로 대소를 비교하면 큰 값이 앞에 있으면 오름차순 정렬일 때는 1(양수)을,

내림차순 정렬일때는 -1(음수)을 반환해준다. 

 

join()함수 

배열의 원소를 join의 인자로 연결하여 하나의 문자열로 반환해준다. 

memberNameArray.join(' -> ')

 

 

++css selector 

 

 

속성 선택자 [attribute]

$('a[target]').css('border','3px solid green');

[target] 

target 속성이 존재하는 모든 객체

 

a[target] 

a태그의 target 속성이 존재하는 모든 객체  

 

a[target != '_blank']{

a[target!='_blank']

a태그의 target 속성이 _blank가 아닌 모든 객체 

 

[attribute ^= 'value']

attribute의 값이 'value'로 시작하는 모든 객체

 

[attribute $= 'value']

attribute의 값이 'value'로 끝나는 모든 객체

 

[attribute = 'value']

attribute의 값이 'value'와 일치하는 모든 객체

 

[attribute *= 'value']

attribute의 값이 'value'을 포함하는 모든 객체

 

[attribute ~= 'value']

attribute의 값이 'value'단어를 포함하는 모든 객체 (단어라 함은 value를 공백으로 구분해 줄 수 있어야 한다.)

 

 

: pseudo class 가상클래스(의사클래스)

선택한 요소가 특정 조건을 만족하여야 적용되게 할 수 있다. 

 

LVHA(Link - Visited - Hover - Active) 여러개의 슈도클래스를 같이 작성할 때는 순서를 지켜 작성해야 정상 작동한다.

:link 방문전 

a:link{

color:grey;

}

:visited 방문후

:hover 마우스가 위에 올라와있을때

:active 누르고 있을때

:first(last)-child 첫번째(마지막) 자식인 경우

 

:: pseudo element 가상 엘레먼트

::before(after) 요소의 앞(뒤)에 요소 삽

::first-letter 요소의 첫 글자

h2::first-letter{ }

::selection 사용자가 선택한 요소

::placeholder placeholder의 텍스트 

 

jQuery에서 제공하는 슈도클래스 

$('tr:eq(0) > td:gt(2)').css('background','orange');

:eq(),gt(),lt() 요소의 값이 일치(크거나 작으면)하면

:odd() 요소의 값이 홀수이면

$('tr:eq(2)>td:even').css('background','purple');

:even() 요소의 값이 짝수이면

:first() 요소의 첫번째 값

$('tr:eq(3)>td:first').css('background','purple');

:last() 요소의 마지막 

:nth-child(n) n번째 자식

:not() ~가 아니면 

td.notSelect{

border: 0.5px dashed blue;

}

td태그 중 notSelect클래스 

td:not(.notSelect)

notSelect 클래스가 아니면 

 

 

'Javascript' 카테고리의 다른 글

Javascript this  (0) 2023.09.23
JQuery effect  (0) 2023.09.22
JQuery 이해하기  (0) 2023.09.22
Javascript defer  (0) 2023.09.21
CSS 선택자를 이용한 HTML DOM 객체 Handling  (0) 2023.09.18

+ Recent posts