3
사파리에서 발생하지 않는 것 같은 이상한 문제가 있습니다.DOM 요소 dblclick 이벤트가 DOM 요소 삭제시 클릭 이벤트 발생 후 변경됨
각 행에는 고유 한 onclick 및 ondblclick 이벤트가있는 행 세트가있는 테이블이 있습니다. 개체 중 하나를 두 번 클릭하면 처음에 onclick 관련 함수 (예상대로)가 실행되고 다른 행 (두 번 클릭 한 것과 다른 행)이 삭제됩니다. 그런 다음 dblclick과 연결된 함수는 실행되지 않습니다.
내가 말했듯이 (클릭 한 사람이 아닌 다른 사람) 행을 제거하는 행에 주석을 달면 onclick 및 ondblclick 이벤트가 모두 실행됩니다 ... 두 이벤트 함수의 코드를 첨부합니다.
ret.onclick = function(){
// Trigger click event
var evt = arguments[0] || window.event;
self.signalClick(evt.target || evt.srcElement);
if(elem == this.selected) return;
if(self.selected != null){
// Set list element to not selected
var telem = document.getElementById(self.getChildID(self.selected['id']));
telem.setAttribute('class', 'gui_list_uselected');
// Remove previously selected element summary
var telemexp = document.getElementById(self.getChildID(self.selected['id']) + '_exp');
if(telemexp) telemexp.parentNode.removeChild(telemexp); // FAULTY LINE!
}
ret.setAttribute('class', 'gui_list_selected');
self.selected = elem;
// Add element summary to the list
appendAfter(ret, self.drawSummary(elem));
};
ret.ondblclick = function(){
// Trigger double click event
var evt = arguments[0] || window.event;
self.signalDblClick(evt.target || evt.srcElement);
};
해결되었습니다. 문제는 "if (elem == this.selected) return;"줄에 있었고 DOM 객체가 아니라 클래스를 참조하기 위해 self.selected 여야했습니다 ... – gaspercat