티스토리 뷰
<Selector>
// jQuery
$('.selector');
$('#selector');
$('div.selector').find('.btn');
// javascript
document.getElementsByClassName('selector');
document.getElementById('selector');
document.querySelector('.selector').querySelector('li');
<Attribute>
// jQuery
$('[data-foo-bar="someval"]');
// javascript
document.querySelectorAll('[data-foo-bar="someval"]');
<Pseudo-class>
// jQuery
$('#myForm:invalid');
// javascript
document.querySelectorAll('#myForm:invalid');
<Children>
// jQuery
$('#myParent').children();
// javascript
document.getElementById('myParent').children;
<Children only>
// jQuery
$('#myParent > [ng-click]');
// javascript
document.querySelector('#myParent > [ng-click]');
<Excluding Elements>
// jQuery
$('div:not(.ignore)');
// javascript
document.querySelectorAll('div:not(.ignore)');
<자바스크립트로 만든 선택자 함수>
// javascript
window.$ = function(selector) {
var selectorType = 'querySelectorAll';
if (selector.indexOf('#') === 0) {
selectorType = 'getElementById';
selector = selector.substr(1, selector.length);
}
return document[selectorType](selector);
};
//ex
$('div');
<.empty()>
// jQuery
$('div').empty();
// javascript
document.querySelector('div').innerHTML = '';
<.remove()>
// jQuery
$('div').remove();
// javascript
const div = document.querySelector('div');
div.parentNode.removeChild(div);
<.addClass(), .removeClass()>
// jQuery
$('div').addClass('hidden');
$('div').removeClass('hidden');
// javascript
const div = document.querySelector('div');
div.classList.add('hidden');
div.classList.remove('hidden');
<.hasClass()>
// jQuery
$('div').hasClass('hidden');
// javascript
document.querySelector('div').classList.containts('hidden');
<.html()>
// jQuery
$('div').html(string);
// javascript
document.querySelector('div').innerHTML = string;
<.text()>
// jQuery
$('div').text(); // get
$('div').text(string); // set
// javascript
const div = document.querySelector('div');
div.textContent; // get
div.textContent = 'string'; //set
<.$.each>
//jQuery
$.each(array, (i, item) => {
// do something
});
// javascript
array.forEach((item, i) => {
// do something
});
<.append()>
// jQuery
$('div').append(element);
// javascript
document.querySelector('div').append(element);
document.getElementById('parent').appendChild(document.getElementById('element'));
<.prepend()>
<!-- HTML -->
<div id="parent">
<div id="orphan"></div> <!-- 조작 요소 -->
<div id="c1"></div>
<div id="c2"></div>
<div id="c3"></div>
</div>
<!-- jQuery -->
$('#parent').prepend($('#orphan'));
<!-- javascript -->
document.getElementById('parent').insertBefore(document.getElementById('orphan'), document.getElementById('c1'));
<.clone()>
// jQuery
$('div').clone();
// javascript
document.querySelector('div').cloneNode(true);
<DOM에서 데이터 얻기>
// jQuery
$('div').data('product-id');
// javascript
document.querySelector('div').dataset.productId; // IE11미만에서는 미지원
document.querySelector('div').getAttribute('data-product-id');
<Creating Elements>
// jQuery
$('<div></div>');
// javascript
document.createElement('div');
<Inserting Elements After>
<!-- HTML -->
<div id="1"></div>
<div id="1.1"></div> <!-- 조작 요소 -->
<div id="2"></div>
<div id="3"></div>
<!-- jQuery -->
$('#1').after('<div id="1.1"></div>');
<!-- javascript -->
document.getElementById('1').insertAdjacentElement('afterend', '<div id="1.1"></div>');
<Inserting Elements Before>
<!-- HTML -->
<div id="0.9"></div> <!-- 조작 요소 -->
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<!-- jQuery -->
$('#1').before('<div id="0.9"></div>');
<!-- javascript -->
document.getElementById('1').insertAdjacentElement('beforebegin', '<div id="0.9"></div>');
<Inserting Elements As Children>
<!-- HTML -->
<div id="parent">
<div id="newChild"></div> <!-- 조작 요소 -->
<div id="oldChild"></div>
</div>
<!-- jQuery -->
$('#parent').prepend('<div id="newChild"></div>');
<!-- javascript -->
document.getElementById('parent').insertAdjacentElement('afterbegin', '<div id="newChild"></div>');
...
<!-- HTML -->
<div id="parent">
<div id="oldChild"></div>
<div id="newChild"></div> <!-- 조작 요소 -->
</div>
<!-- jQuery -->
$('#parent').append('<div id="newChild"></div>');
<!-- javascript -->
document.getElementById('parent').insertAdjacentElement('beforeend', '<div id="newChild"></div>');
<Adding/Removing/Changing Attributes>
// jQuery
$('#foo').attr('role', 'button'); // set
$('#foo').removeAttr('role'); // remove
// javascript
document.getElementById('foo').setAttribute('role', 'button'); // set
document.getElementById('foo').removeAttribute('role'); // remove
<Adding/Updating Element Styles>
// jQuery
$('#note').css('fontWeight', 'bold');
// javascript
document.getElementById('note').style.fontWeight = 'bold';
<다른점>
/* jQuery에서는 복수개의 DOM을 찾으면 코드 한줄로 모든 DOM에 관한 것을 함께 변경해주지만 javascript는 일일히 루프를 돌며 처리를 해줘야 한다. */
// jQuery
$('div').addClass('hidden');
// javascript
const divs = document.querySelector('div');
divs.forEach((div, index) => {
div.classList.add('hidden');
});
계속 업데이트 진행중..
- 참고
https://qkraudghgh.github.io/javascript/2017/08/17/jquery-to-javascript.html
jQuery 탈출기
최근에 Plain Bagel이란 팀에 프리랜서로 일하게 되면서 자막 에디터를 만들게 되었다. jQuery만을 이용해 작업하였는데 이를 javascript로다시 작성하면서 느낀점을 적어본다.
qkraudghgh.github.io
http://jeonghwan-kim.github.io/2018/01/25/before-jquery.html
jQuery 보다 먼저 알았으면 좋았을 것들
웹개발할 때 난 jquery 부터 사용하기 시작한것 같다. 라이브러리가 주는 편리함 넘어 어떻게 DOM API를 사용하는지는 몰랐다. 앵귤러, 리엑트 같은 프레임웍을 사용할 때도 마찬가지다. 기능을 구��
jeonghwan-kim.github.io
https://blog.garstasio.com/you-dont-need-jquery/dom-manipulation/
DOM Manipulation – You Don't Need jQuery! – Free yourself from the chains of jQuery by embracing and understanding the modern We
We previously learned how to easily select elements without relying on jQuery. but what about changing elements? What about creating new elements? How about relocating elements elsewhere on the page? You may be glad to know that all of this, and more, is a
blog.garstasio.com
'자바스크립트' 카테고리의 다른 글
Scrolling Background-Image Paralax (0) | 2020.07.07 |
---|---|
ES6 자바스크립트 문법 정리 (0) | 2020.05.15 |
JS 기본 Document (0) | 2020.03.18 |
NHN 자바스크립트 개발 가이드 (0) | 2017.08.11 |
javascript 아이폰 or 안드로이드 구분 (0) | 2017.08.10 |
- Total
- Today
- Yesterday
- PlaceHolder
- 웹폰트
- node.js
- 부트스트랩 네이밍
- Git
- placeholder css
- 접근성 tabmenu
- jquery
- SFPro web font
- one scroll
- CSS3
- 접근성탭메뉴
- WAI-ARIA tab menu
- Flexbox
- 패럴럭스 스크롤
- 키보드 웹접근성
- San Francisco웹폰트
- bxslider
- VSCode
- San Francisco web font
- 자바스크립트 탭메뉴
- 본고딕
- SFPro웹폰트
- 웹 접근성
- 깃허브
- WAI-ARIA탭메뉴
- 부트스트랩class명
- 반응형웹
- 키보드접근성자바스크립트
- 애플웹폰트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |