我剛剛遇到了這個在IE中發生的奇怪問題。在HTML我加入了一個onclick事件來調用一個函數來改變這樣的頁面元素,如何使用jQuery覆蓋內聯JavaScript事件?
onclick="changePage(1, 2);"
裏面的changePage功能,我改變了currentPageNum,並向前和向後按鈕nextPageNum當函數被調用這個樣子,
function changePage(currentPageNum, nextPageNum) {
var pageValidated = true;
//If the current page content validates, then we can change the page
if(pageValidated) {
//Add new events to both arrow buttons
$('#goBack').attr('onclick', '').unbind().click(function() {
changePage(nextPageNum, parseInt(nextPageNum) - 1);
});
$('#goForward').attr('onclick', '').unbind().click(function() {
changePage(nextPageNum, parseInt(nextPageNum) + 1);
});
}
}
我加入了ATTR(「的onclick」,「」).unbind(),以刪除舊的onclick事件,然後添加新的。這在FF中工作正常,但在IE中它出於某種原因同時調用了新的點擊事件和舊的事件。我認爲當你附加一個新的點擊事件時,舊事件就會消失,但現在看起來並不是這樣。我怎樣才能在IE瀏覽器中工作?
我想我知道現在發生了什麼。當調用changePage函數時,它將刪除舊的onclick事件,在第一個onclick事件之後添加新事件,然後調用在第一個事件被調用後直接添加的onclick事件。這就好像我在同一個onclick事件中有2個函數調用一樣。
我正在使用jQuery版本1.4.2。我從這個函數中刪除了額外的內容來簡化它,但這是導致問題的部分。
感謝您的幫助, 都市報
但是不解除綁定()unbind所有事件? – Metropolis 2010-03-08 17:02:46
,你不需要添加attr('onclick','')來解決一些瀏覽器不能刪除事件的問題嗎? – Metropolis 2010-03-08 17:03:24
我試了你的方式,我仍然有同樣的問題..... – Metropolis 2010-03-08 17:05:17