동적 바인딩
html 실행 순서에 따라 dom 객체도 생성되기 때문에 이벤트 실행 완료 이후에 생성되는 html에는 이벤트를 걸 수가 없다. 이에 따라 동적으로 이벤트를 걸거나 객체 생성시에 이벤트를 걸어야 한다.
버튼 생성 or 제거
<div>
<button type="button" class="add">생성</button>
<button type="button" class="del">제거</button>
</div>
다음 과 같은 결과 도출>>
방법1.
$(document).on('click','.add',function(){
var clone = $(this).parent().clone();
$('body').append(clone);
});
$(document).on('click','.del',function(){
$('body').parent().remove();
});
방법2.
$('.add').click(function(){
var clone = $(this).parent().clone();
clone.find('.add').click(function(){
var clone = $(this).parent().clone();
$('body').append(clone);
});
clone.find('.del').click(function(){
$(this).parent().remove();
});
$('body').append(clone);
});
이벤트 등록
▶ 트리거
이미 걸린 이벤트를 스크립트 상에서 작동되게 하는 방법. (사용자가 이벤트 발동한것처럼 작동 시킬 수 있다.)
- $('선택자').trigger('이벤트명');
- $('선택자').이벤트메서드();
☞ 사용방법
$('.add').trigger('click')
$('.add').click()
$('.add').eq(0).trigger('click')
$('.add').eq(0).click()
▶ 이벤트 제거 메서드
선택된 객체에 걸린 이벤트를 제거한다.
$('선택자').off('이벤트명');
(이벤트를 거는 메서드 on)
$('선택자').on('click',function(){});
동적 바인딩 실습
더보기
<script>
var choice2List = {
'9' : ['9급 홍길동', '9급 고길동'],
'7' : ['7급 이순신', '7급 유관순']
}
var choice3List = {
'9급 홍길동' : ['국어', '영어'],
'9급 고길동' : ['국사', '토익'],
'7급 이순신' : ['과학', '국사'],
'7급 유관순' : ['수학', '일어']
}
$(function(){
$('.choice1').click(function(){
var val = $(this).val();
var array = choice2List[val];
var html='';
for(var i=0;i<array.length;i++){
html+='<label><input type="checkbox" class="choice2" value="'+array[i]+'">'+array[i]+'</label>';
}
$('#choice2Wrap').html(html);
});
});
$(document).on('click','.choice2',function(){
var html='';
$('.choice2:checked').each(function(){
var choice = $(this).val();
var array = choice3List[choice];
for(var i=0;i<array.length;i++){
html+='<label><input type="checkbox" class="choice3" value="'+array[i]+'">'+array[i]+'</label>';
}
});
$('#choice3Wrap').html(html);
});
</script>
<div>
<h1>급수 선택</h1>
<label><input type="radio" name="choice1" class="choice1" value="9"> 9급</label>
<label><input type="radio" name="choice1" class="choice1" value="7"> 7급</label>
</div>
<div>
<h1>교수 선택</h1>
<div id="choice2Wrap"></div>
</div>
<div>
<h1>과목 선택</h1>
<div id="choice3Wrap"></div>
</div>
실습 결과
급수 선택
교수 선택
과목 선택
'JavaScript&JQuery' 카테고리의 다른 글
Ajax - HTML (0) | 2020.04.08 |
---|---|
Ajax (0) | 2020.04.08 |
객체 조작 메서드 - 편집 메서드 (0) | 2020.04.08 |
객체 조작 메서드 - 수치 조작 메서드 (0) | 2020.04.08 |
객체 조작 메서드 - 속성 조작 메서드 (0) | 2020.04.08 |