DOM元素dblclick事件在删除dom元素后发生单击事件后发生变化

问题描述:

我在Firefox上遇到了一个奇怪的问题,它似乎不会在Safari上发生。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); 
}; 
+0

它已经被解决了。 问题出现在“if(elem == this.selected)return;”这行,它必须是self.selected,才能引用类,而不是DOM对象... – gaspercat 2012-04-28 13:42:17

Firefox工作正常。根据spec,无论如何onclick在ondblclick之前触发。 看看这个so answer来克服这一点。