2014-03-03 101 views
1

我正在使用這一點的jQuery爲了使我的網頁上的按鈕切換div。IE8 .attachEvent()錯誤

var SnapEnable = document.getElementById('open-right'); 
$(SnapEnable).addEventListener("click", function() { 
    if (snapper.state().state == "right") { 
     snapper.close(); 
    } 
    else { 
     snapper.open('right'); 
    } 
}); 

我得到一個錯誤在IE8中有這樣的代碼「Object不支持這個屬性或方法」。所以我更新了我的代碼如下: var SnapEnable = document.getElementById('open-right');

if (!SnapEnable.addEventListener) { 
    $(SnapEnable).attachEvent("onclick", function() { 
    if (snapper.state().state == "right") { 
     snapper.close(); 
    } 
    else { 
     snapper.open('right'); 
     } 
    }); 
} 
else { 
    $(SnapEnable).addEventListener("click", function() { 
    if (snapper.state().state == "right") { 
     snapper.close(); 
    } 
    else { 
     snapper.open('right'); 
     } 
}); 
}; 

我認爲這會解決這個問題,但我仍然收到錯誤。

+1

如果你正在使用jQuery則()':固定)

試試這個綁定點擊事件?是的,你不必檢查ie和其他人。 – Jai

+0

這適用於*非IE瀏覽器?我會很驚訝,如果它..(jQuery沒有定義一個'addEventListener',所以它也會在「else」情況下失敗;荒謬的檢查是處理跨瀏覽器兼容性問題,這jQuery已經句柄*嘆息*) – user2864740

+0

感謝指針,我需要回到開始並學習jQuery的基礎知識。 – DesignSubway

回答

3

哇... 嘗試讀取的jQuery的文件(你混合jQuery和純JS指令)......

(爲什麼不使用'。對

$('#open-right').click(function(e) { 
    if (snapper.state().state == "right") { 
     snapper.close(); 
    } 
    else { 
     snapper.open('right'); 
    } 
    e.preventDefault(); 
}); 
+0

謝謝你的回答,我當然需要閱讀jQuery! – DesignSubway

5

您正在檢查HTMLElement.prototype.addEventListener的存在,然後使用$將其轉換爲jQuery對象,該對象不支持該接口。

這是SnapEnable$(SnapEnable)之間的差異。

如果你使用jQuery的,你可能想.on

+0

你是完全正確的,我盯着我的代碼很久,甚至沒有注意到。有時需要一雙新的眼睛!謝謝。 – DesignSubway