๋ํผ(wrapper)๋?
jQuery(์๋ฆฌ๋จผํธ ์ค๋ธ์ ํธ | 'CSS์คํ์ผ ์ ํ์')
bold ํ์ํ ๋ถ๋ถ์ด ๋ํผ, ์ธ์๋ก ์ ๋ฌ๋ ์์๋ค์ jQuery์ ๊ธฐ๋ฅ์ฑ์ ๋ถ๊ฐํด์ ๋ฐํํ๋ค.
๋ ํผ์ ์์ ํ ์ฌ์ฉ
$(์๋ฆฌ๋จผํธ) ์ jQuery(์๋ฆฌ๋จผํธ)๋ ๊ฐ์ ์๋ฏธ์ด์ง๋ง $๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ์ ์ถฉ๋ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
<script type="text/javascript">
//$ ๋์ jQuery๋ฅผ ์ฌ์ฉ
jQuery('body').html('hello world');
</script>
<script type="text/javascript">
//$๋ฅผ ํจ์์ ์ง์ญ๋ณ์๋ก ์ ์ธํด์ ์ธ๋ถ์ ์์์ง ๋ชจ๋ฅด๋ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ $์์ ์ถฉ๋์ ์๋ฐฉ
(function($){
$('body').html('hello world');
})(jQuery)
</script>
์ ์ด ๋์์ ์ง์ ํ๋ ๋ฐฉ๋ฒ
jQuery( selector, [context] )
jQuery( element )
์์ 1. jQuery( selector, [context] )
<html>
<body>
<ul>
<li>test2</li>
</ul>
<ul class="foo">
<li>test</li>
</ul>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
(function($){
$('ul.foo').click( function() {
$('li', this).css('background-color','red');
});
})(jQuery)
</script>
</body>
</html>
์์ 2. jQuery( element )
<html>
<body>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document.body).css( "background-color", "black" );
</script>
</body>
</html>
์ ํ์๋?
jQuery wrapper์๋ CSS ์ ํ์๊ฐ ์์นํ ์ ์๋๋ฐ, ์ด๋ฅผ ํตํด์ ์ ์ดํ๋ ค๋ ์๋ฆฌ๋จผํธ๋ฅผ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ์ง์ ํ ์ ์๋ค.
์ ํ์ ํ์๊ธฐ
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body{
font-size:12px;
}
.selected,.selected_parent {
background-color: red !important;
color:white;
border:2px solid red !important;
}
input.btn {
width:130px;
}
ul, .live{
float:left;
width:150px;
padding-left:20px;
margin:0;
}
textarea{
float:left;
width: 400px;
height:150px;
font-size:11px;
margin-left:20px;
}
.clear{
clear: both;
}
.sample{
margin-bottom: 20px;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<fieldset>
<legend> ๊ธฐ๋ณธ </legend>
<div class="sample">
<ul id="tutorials">
<li class="tutorial" id="HTML"> HTML </li>
<li class="tutorial" id="CSS"> CSS </li>
<li class="tutorial" id="javascript"> javascript </li>
<li class="tutorial" id="jquery"> jQuery </li>
<li class="tutorial" id="PHP"> PHP </li>
<li class="tutorial" id="MYSQL"> MYSQL </li>
</ul>
<textarea>
<ul id="tutorials">
<li class="tutorial" id="HTML"> HTML </li>
<li class="tutorial" id="CSS"> CSS </li>
<li class="tutorial" id="javascript"> javascript </li>
<li class="tutorial" id="jquery"> jQuery </li>
<li jclass="tutorial" id="PHP"> PHP </li>
<li class="tutorial" id="MYSQL"> MYSQL </li>
</ul>
</textarea>
<div class="clear"></div>
</div>
<input class="btn" type="button" id="#jquerybtn" value="#jquery" /> - id ์ ํ์ <br />
<input class="btn" type="button" id=".tutorial" value=".tutorial" /> - class ์ ํ์ <br />
<input class="btn" type="button" value="li" /> - ์๋ฆฌ๋จผํธ ์ ํ์ <br />
<input class="btn" type="button" value="#jquery, #MYSQL" /> - ๋ค์ค ์ ํ์ <br />
</fieldset>
<fieldset>
<legend> filter </legend>
<div class="sample">
<ul id="list">
<li> HTML </li>
<li> CSS </li>
<li> javascript </li>
<li> PHP </li>
<li> MYSQL </li>
</ul>
<textarea>
<ul id="list">
<li> HTML </li>
<li> CSS </li>
<li> javascript </li>
<li> PHP </li>
<li> MYSQL </li>
</ul>
</textarea>
<div class="clear"></div>
</div>
<input class="btn" type="button" value="#list li:eq(2)" /> - ์ธ์์ ์ธ๋ฑ์ค๊ฐ ๋์ผํ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="#list li:gt(1)" /> - ์ธ์ ๋ณด๋ค ์ธ๋ฑ์ค๊ฐ ํฐ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="#list li:lt(2)" /> - ์ธ์ ๋ณด๋ค ์ธ๋ฑ์ค๊ฐ ์์ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="#list li:even" /> - ์ฒซ๋ฒ์งธ, ์ธ๋ฒ์งธ... ํ ์์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ง ์๋ฆฌ๋จผํธ์ ๋ํ ์ ํ์ <br />
<input class="btn" type="button" value="#list li:odd" /> - ๋๋ฒ์งธ, ๋ค๋ฒ์งธ.... ์ง ์์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ง ์๋ฆฌ๋จผํธ์ ๋ํ ์ ํ์ <br />
<input class="btn" type="button" value="#list li:first" /> - ์ฒซ๋ฒ์ฌ ์ธ๋ฑ์ค ์๋ฆฌ๋จผํธ์ ๋ํ ์ ํ์ <br />
<input class="btn" type="button" value="#list li:last" /> - ๋ง์ง๋ง ์ธ๋ฑ์ค ์๋ฆฌ๋จผํธ์ ๋ํ ์ ํ์ <br />
</fieldset>
<fieldset>
<legend> ์์ฑ </legend>
<div class="sample">
<ul id="attribute">
<li target="ABCD">ABCD</li>
<li target="BCDE">BCDE</li>
<li target="CDEF">CDEF</li>
<li target="DEFG">DEFG</li>
<li target="EFGH">EFGH</li>
<li id="FGHI" target="FGHI">FGHI</li>
</ul>
<textarea>
<ul id="attribute">
<li target="ABCD">ABCD</li>
<li target="BCDE">BCDE</li>
<li target="CDEF">CDEF</li>
<li target="DEFG">DEFG</li>
<li target="EFGH">EFGH</li>
<li id="FGHI" target="FGHI">FGHI</li>
</ul>
</textarea>
<div class="clear"></div>
</div>
<input class="btn" type="button" value="[target*="BC"]" /> - ์์ฑ์ ๊ฐ์ ์ฃผ์ด์ง ๋ฌธ์์ด์ด ํฌํจ๋๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="[target="DEFG"]" /> - ์์ฑ์ ๊ฐ๊ณผ ์ฃผ์ด์ง ๋ฌธ์์ด์ด ์ผ์นํ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="[target!="DEFG"]" /> - ์์ฑ์ ๊ฐ๊ณผ ์ฃผ์ด์ง ๋ฌธ์์ด์ด ์ผ์นํ์ง ์๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="[target^="B"]" /> - ์์ฑ์ ๊ฐ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์์ด์ด ์ฒ์ ๋ฑ์ฅํ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="[target$="H"]" /> - ์์ฑ์ ๊ฐ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์์ด์ด ๋ง์ง๋ง์ผ๋ก ๋ฑ์ฅํ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="[target]" /> - ์์ฑ์ด ์กด์ฌํ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
<input class="btn" type="button" value="[target][id]" /> - ์์ฑ๋ค์ด ์กด์ฌํ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์
</fieldset>
<fieldset>
<legend>Form</legend>
<div class="live">
<div>
<input type="text" disabled="disabled" value="disabled" />
<input type="text" value="enabled"/>
</div>
<div><input type="checkbox" checked="checked" /></div>
<div><input type="checkbox" /></div>
</div>
<textarea class="sample">
<div>
<input type="text" disabled="disabled" value="disabled" />
<input type="text" value="enabled"/>
</div>
<div><input type="checkbox" checked="checked" /></div>
<div><input type="checkbox" /></div>
</textarea>
<div class="clear"></div>
<input class="btn" type="button" value="[type="text"]" /> - ํผ ์๋ฆฌ๋จผํธ๋ฅผ ์ ํํ ๋๋ ์์ฑ ์
๋ ํฐ๋ฅผ ์ฌ์ฉํ๋ค. <br />
<input class="btn" type="button" value="[type="text"]:disabled" /> - disabled ์์ฑ์ ๊ฐ์ด disabled์ธ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์<br />
<input class="btn" type="button" value="[type="text"]:enabled" /> - disabled ์์ฑ์ ๊ฐ์ด enabled์ธ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์<br />
<input class="btn" type="button" value="input:checked" /> - ์ฒดํฌ๋ฐ์ค ์ค ์ฒดํฌ๊ฐ ๋ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ์๋ด๋ ์ ํ์ <br />
</fieldset>
<script>
$('input').on('click', function() {
$this = $(this);
$('*').removeClass('selected');
switch($this.attr('value')) {
case '#jquery':
$('#jquery').addClass('selected');
break;
case '.tutorial':
$('.tutorial').addClass('selected');
break;
case 'li':
$('li').addClass('selected');
break;
case '#jquery, #MYSQL':
$('#jquery, #MYSQL').addClass('selected');
break;
case '#list li:eq(2)':
$('#list li:eq(2)').addClass('selected');
break;
case '#list li:gt(1)':
$('#list li:gt(1)').addClass('selected');
break;
case '#list li:lt(2)':
$('#list li:lt(2)').addClass('selected');
break;
case '#list li:even':
$('#list li:even').addClass('selected');
break;
case '#list li:odd':
$('#list li:odd').addClass('selected');
break;
case '#list li:first':
$('#list li:first').addClass('selected');
break;
case '#list li:last':
$('#list li:last').addClass('selected');
break;
case '[target*="BC"]':
$('li[target*="BC"]').addClass('selected');
break;
case '[target="DEFG"]':
$('li[target="DEFG"]').addClass('selected');
break;
case '[target!="DEFG"]':
$('li[target!="DEFG"]').addClass('selected');
break;
case '[target^="B"]':
$('li[target^="B"]').addClass('selected');
break;
case '[target$="H"]':
$('li[target$="H"]').addClass('selected');
break;
case '[target]':
$('li[target]').addClass('selected');
break;
case '[target][id]':
$('li[target][id]').addClass('selected');
break;
case '[type="text"]':
$('[type="text"]').addClass('selected');
break;
case '[type="text"]:disabled':
$('[type="text"]:disabled').addClass('selected');
break;
case '[type="text"]:enabled':
$('[type="text"]:enabled').addClass('selected');
break;
case 'input:checked':
$('input:checked').parent().addClass('selected');;
break;
}
})
</script>
</body>
</html>
Chain์ด๋?
jQuery์ ๋ฉ์๋๋ค์ ๋ฐํ๊ฐ์ผ๋ก ์๊ธฐ ์์ ์ ๋ฐํํด์ผ ํ๋ค๋ ๊ท์น์ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ฅผ ์ด์ฉํ๋ฉด ํ๋ฒ ์ ํํ ๋์์ ๋ํด์ ์ฐ์์ ์ธ ์ ์ด๋ฅผ ํ ์ ์๋ค.
์์ 1. jQuery๋ฅผ ์ด์ฉํด์ ์ฝ๋ฉํ๋ ๊ฒฝ์ฐ
<html>
<body>
<a id="tutorial" href="http://jquery.com" target="_self">jQuery</a>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery('#tutorial').attr('href', 'http://jquery.org').attr('target', '_blank').css('color', 'red');
</script>
</body>
์์ 2. javascript์ DOM์ ์ด์ฉํด์ ์ฝ๋ฉํ๋ ๊ฒฝ์ฐ
<html>
<body>
<a id="tutorial" href="http://jquery.com" target="_self">jQuery</a>
<script type="text/javascript">
var tutorial = document.getElementById('tutorial');
tutorial.setAttribute('href', 'http://jquery.org');
tutorial.setAttribute('target', '_blank');
tutorial.style.color = 'red';
</script>
</body>
</html>
chain์ ์ฅ์
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค.
- ์ธ๊ฐ์ ์ธ์ด์ ์ ์ฌํด์ ์ฌ๊ณ ์ ์์ฐ์ค๋ฌ์ด ๊ณผ์ ๊ณผ ์ผ์นํจ.
ํ์(traversing)
- chain์ ๋์์ ๋ฐ๊ฟ์ ์ฒด์ธ์ ๊ณ์ ์ฐ์ฅ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ
- http://api.jquery.com/category/traversing/
- ๋๋ฌด ๋ณต์กํ chain์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋จ์ด ๋จ๋ฆด ์ ์๋ค.
์์ 3. traversing์ ์ด์ฉํด์ chain์์์ ๋์์ ์์ง์ผ ์ ์๋ค.
<html>
<body>
<ul class="first">
<li class="foo"> list item 1 </li>
<li> list item 2 </li>
<li class="bar"> list item 3 </li>
</ul>
<ul class="second">
<li class="foo"> list item 1 </li>
<li> list item 2 </li>
<li class="bar"> list item 3 </li>
</ul>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">$('ul.first').find('.foo').css('background-color', 'red').end().find('.bar').css('background-color', 'green');</script>
</body>
</html>
'๐ค Web > ๐ JQuery' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JQuery ์ ๋ณตํ๊ธฐ 4 (ํ์, animation, ajax) (0) | 2022.07.06 |
---|---|
JQuery ์ ๋ณตํ๊ธฐ 3 (event, element, form) (0) | 2022.07.06 |
JQuery ์ ๋ณตํ๊ธฐ 1 (Library, JQuery, javascript์ ๋น๊ต) (0) | 2022.07.06 |
๋๊ธ