2010-08-20 48 views
2

嘆息殘疾人按鈕,在IE8與jQuery.live仍然可點擊( '點擊')事件

我不斷收到一些奇怪的問題與IE 8

我在每一個有這種

<input name="Btn_Edit" disabled="disabled" id="Btn_Edit" type="button" value="Edit"/> 

$(function() 
{ 
    $('#Btn_Edit').live('click', function() 
    { 

     alert('hi'); 

    }); 
}); 

所以其他瀏覽器此警報將永遠不會觸發,因爲我的按鈕被禁用。在IE 8中,它會進入我的編輯按鈕並觸發警報。

我不知道爲什麼。

http://jsfiddle.net/QgceL/

你可以自己去看吧。只需加載IE 8並嘗試一下。

但是,如果我改變它。

http://jsfiddle.net/YD2eS/

看來工作。我仍然不知道它爲什麼會產生不同的光標而不是指針。

反正這個問題似乎與現場點擊事件。

+0

它與jQuery處理「實時」事件的方式有關。 – mhitza 2010-08-20 19:33:02

+0

只是一個評論,因爲它不是一個答案...我沒有意識到,jQuery公開了一種方式來響應點擊一個禁用的按鈕...它將是非常有用的彈出消息解釋給用戶*爲什麼*他們嘗試點擊的按鈕被禁用... – Rob 2010-08-20 20:18:10

+0

@Rob,如果您在容器中檢測到元素,則可以通過事件冒泡來做到這一點。 event.target可以在這些情況下爲您提供一些信息。 – 2010-08-20 20:29:09

回答

0

改變你的選擇到:

$('#Btn_Edit[disabled!=true]') 

需要注意的是,如果你的選擇是$這是不行的( '#Btn_Edit [!禁用=禁用]')

如果你這樣做,你可以看到alert($('#Btn_Edit').attr('disabled'));它在未被禁用時將爲'假',在禁用時爲真。

這裏是一個小提琴頁面,看看它在行動:http://jsfiddle.net/QgceL/3/

+0

雅我有點做了那樣的事情。我反而做了if($('#Btn_Edit')。attr('disabled')== false)//在實際的點擊事件中繼續。我不確定你的方式是否更快。我也發現令人困惑的是,我永遠不知道是否要設置.attr('disabled',true)或.attr('disabled','disabled')。 – chobo2 2010-08-20 22:11:39

0

live更改爲click。 是的,這太奇怪了!我不知道爲什麼會發生這種情況。

+0

現在這是一個選項。我有4個Ajax選項卡。如果用戶會轉到下一個選項卡並返回,則該按鈕將無法工作。現在,我想我必須做一個檢查,看看它是否真的被禁用或沒有在實際的點擊事件中,直到有人找出爲什麼發生這種情況。 – chobo2 2010-08-20 19:47:15

+0

每次用戶在選項卡中單擊ajax回調時,都可以運行事件綁定器。 – Topera 2010-08-20 20:39:59

+0

事件粘合劑?我沒有遵循 – chobo2 2010-08-20 22:09:47

0

這似乎是一個jQuery錯誤,在版本發生< 1.5.x.這篇文章可能是在jQuery 1.4是最新版本的時候完成的,但是新版本沒有這個問題。