2013-03-06 77 views
0

我是網頁開發的新手。IE8上的JavaScript/Jquery點擊事件無法正常工作

我在我的項目的按鈕上有一些問題。 這行代碼是工作在所有Web瀏覽器,除了IE8:

$("#SampleBtn").live("click", function(){ 
    console.log('It works!'); 
}); 

它不作出反應的方式點擊時是應該的。在這個例子中,它應該打印出「It works!」,顯然沒有任何反應。但是,如果用戶點擊按鈕而不放開(keydown)超過1秒鐘,它就可以工作。

我不太確定問題是從哪裏來的。它是否與.live或click事件有關?

任何幫助將不勝感激。謝謝!

+1

「活」方法在1.7中被棄用,**在1.9中被刪除**。你使用什麼版本?另一種方法是使用'on'。 – elclanrs 2013-03-06 23:50:15

+2

你使用的是什麼版本的jQuery?在控制檯中查找'$ .fn.jquery'。同樣在IE瀏覽器中,控制檯對象在開發者控制檯打開之前不存在。如果您在此之前嘗試訪問控制檯,您將收到錯誤消息。 – 2013-03-06 23:51:27

+0

我正在使用1.8.2。我嘗試'開',但現在,它甚至不能在Chrome中工作 – Kimpoy 2013-03-06 23:55:56

回答

0

我們發現,本地,當應用程序在我們的node.js服務器運行時,有一個與按鈕沒有問題,但是,這也正是問題的發生。 這是造成IE8上的錯誤:

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png',sizingMethod='scale'); 

看來,預加載導致在自定義按鈕圖像的響應延遲。也許,圖像被提取需要時間。 不管怎麼說,我們能夠通過改變來解決這個問題:

background-image: url('images.png'); 

但是感謝大家抽出時間在此分享你的想法。 :)

1

IE8有不少問題,但這應該肯定有效。我最好的猜測是console.log調用失敗(因爲我在評論中提到的原因)。

嘗試將console.log更改爲alert並查看它是否有效。

也可以嘗試使用delgated version of on

$(document).on('click', '#SampleBtn', function(){ 
    console.log('It works!'); 
}); 
+0

console.log沒有任何問題。無論如何,我要使用您的答案在我們的服務器上更新我們的應用程序。希望它有效 – Kimpoy 2013-03-07 00:27:19

+0

如果在創建綁定後將按鈕添加到DOM,則只需要委託表單。如果它是一個靜態元素,你的原始代碼應該可以工作。 – Barmar 2013-03-07 00:29:21

+0

這是真的,並且不使用委託表單更適用於那些只有少數元素綁定的情況。話雖如此,我認爲(也許不正確)@Kimpoy使用委託的活動綁定是有原因的。 – 2013-03-07 00:40:36