[CSS Selectors]
- 태그 선택자 : tag_name
- 아이디 선택자 : #id_value
- 클래스 선택자 : .class_value
- 공백(자손) 선택자 : parent child, ex) "UL LI" => <ul> <li></li> </ul>
- >자식 선택자 : parent > child
- []속성 선택자 : [attribute=value]
- +인접 선택자
- ~형재 선택자
[JavaScript Selector APIs]
- document.querySelector("selector")
- document.querySelectorAll("selector")
- document.getElementByClassName("class_value")
- getElementById("id_value") : 아이디 속성으로 엘리먼트를 찾는다.
<p id="para1">Some text here</p>
- getElementByTagName("tag_name")
- getElementByName("name_value")
<form name="up"><input type="text"></form>
<form name="down"><input type="text"></form>
- getElementsByTagNameNS("name_space_uri", "tag_name")
// check the alignment on a number of cells in a table in an XHTML document.
var table = document.getElementById("forecast-table");
var cells = table.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "td");
for (var i = 0; i < cells.length; i++) {
var axis = cells[i].getAttribute("axis");
if (axis == "year") {
// grab the data
}
}
[Javascript 이벤트 캡쳐링, 버블링]
중첩된 html element들에서 이벤트가 상위, 하위 element로 전달되는 방법을 말하며
- 버블링(Bubbling) : 자식 element에서 발생된 event가 부모 element 순으로 전달되는 현상
- 캡쳐링(Capturing) : 부모 element에서 발생된 event가 자식 element순으로 전달되는 현상
.Sample Code and output
|
<iframe frameborder="0" src="http://javascript.info/files/tutorial/browser/events/bubbling/capture/index.html" style="color: rgb(51, 51, 51); font-family: Arial, Georgia, Tahoma, sans-serif; font-size: 14px; line-height: 21px; border-style: none; height: 176px;"></iframe>
|
According to this model, the event:
- Captures down - through 1 -> 2 -> 3.
- Bubbles up - through 3 -> 2 -> 1.
Bugging을 방지하기 위한 코드는 다음과 같다.
The cross-browser-code:
|
일반적으로 위와 같은 이벤트 연쇄 반응을 방지하고 해당 element에 대해서만 event를 처리하기 위해서는 usercapture를 false로 stopPropagation을 호출하고로 처리한다.
var elem = document.querySelectorAll("div");
for(var i=0; i<elem.length; i++) {
elem[i].addEventListener("click", function(){
console.log(this.getAttribute("class"));
event.stopPropagation();
}, false);
}
|
댓글 없음:
댓글 쓰기