이벤트 핸들러가 다른 항목 목록이 있습니다.parentNode madness를 방지하는 방법은 무엇입니까?
function addToList(event){
var id = event.target.getAttribute('data-id');
var listId = event.target.parentNode.parentNode.getAttribute('data-id');
// XHR stuff
}
이 코드에 문제가 없지만, parentNode.parentNode
정말 깨지기 쉬운 것 같다 .list
에서 모든 li
...
<li>
<div class="item" data-id="1234">
<h3>Item</h3>
<div class="description">...</div>
<ul class="lists">
<li data-list-id="1">Add to list A<li>
<li data-list-id="2">Add to list B<li>
<li data-list-id="3">Add to list C<li>
</ul>
<button class="delete">delete</button>
</div>
</li>
...
은 다음과 같다 등록 된 클릭 이벤트가 있습니다. 버튼은 하나의 parentNode가 될 것이고 더 깊게 중첩 된 요소는 parentNode^n
이것이 일반적인 문제이며보다 강력한 솔루션이 있다고 생각하십니까? jQuery를 사용하면 $(target).parentNode('.item')
jQuery없이이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
나는 당신이 .closest를 찾고 있다고 생각합니다. 콜백에서 할 수있는 jQuery를 사용하여 http://stackoverflow.com/questions/18663941/finding-closest-element-without-jquery –
을보십시오. '$ (this) .closest ('. item '). 데이터 – vsync
@vsync : "jQuery없이"묻습니다. –