2012-04-28 92 views
3

我在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

回答

0

Firefox工作正常。根據spec,無論如何onclick在ondblclick之前觸發。 看看這個so answer來克服這一點。