2013-02-04 68 views
2

我試圖爲每個jQuery添加一個按鈕。它在其他瀏覽器中完美工作,IE9失敗。按鈕在IE9中無法正確顯示

代碼:

function AddUnsubscribeButton() 
{ 
    var btn = $('<button/>', 
    { 
    type: 'button', 
    text: 'Unsubscribe', 
    id: 'btnUnsubscribe', 
    click: function() { AddCurrentUserToSubscriptionList("Unsubscribe");return false; } 
    }); 

    var divBtns = $(".divButtons").parent(); 
    divBtns.find('#btnSubscribe').remove(); 
    if(divBtns.first().children().length == 2) 
    { 
    divBtns.first().append(btn); 
    } 
} 

在IE9頁面的源代碼就說明這一點:

< button id="btnUnsubscribe" type="button" jQuery17207435150102662105="16" > 

我缺少什麼?

同樣在頁面中,它不呈現爲按鈕,它只顯示按鈕文本 - Unsubscribe
但我需要它顯示爲一個按鈕,就像它在其他瀏覽器中工作一樣。

看來IE9並沒有渲染結束標記。

+1

我剛剛複製你的代碼,它似乎在IE9中工作... – udidu

+0

同樣在這裏花花公子,只是嘗試重新安裝你的IE9 – GianFS

+0

在黑暗中拍攝但會改變這一點:'var btn = $('','爲你做出改變? – Nope

回答

1

你實際上設置元素的屬性是錯誤的。一個按鈕元素沒有按鈕類型,所以你應該使用一個輸入元素,它有一個type=button或者刪除這個類型。

function AddUnsubscribeButton() { 
    var btn = $('<button />', {text: 'Unsubscribe', id: 'btnUnsubscribe'}); 

    btn.on('click', function() { 
     AddCurrentUserToSubscriptionList("Unsubscribe"); 
     return false; 
    }); 

    var divBtns = $(".divButtons").parent(); 
    divBtns.find('#btnSubscribe').remove(); 

    if(divBtns.first().children().length == 2) { 
     divBtns.first().append(btn); 
    } 
} 

它也好像直接在元素上的屬性添加點擊功能附加在IE一些陌生感,而要做到這將是使用click事件處理,像上述的正確方法。

+0

謝謝你的回答我會嘗試這一點,但我看到的XHTML引用那個按鈕實際上有一個類型屬性?我錯過了什麼?http:// xh tml.com/zh/xhtml/reference/button/ –

+0

取決於DOCTYPE,但是,是的,一個按鈕元素可以有一個類型提交實例,這將是有效的,但設置一個按鈕來鍵入'button'並不真的在大多數情況下很有意義。點擊功能可能會讓它變得混亂,因爲在屬性圖中添加類似的點擊功能並不是很好的做法。 – adeneo

+0

你的解決方案在jsfiddle中工作,所以我會將其標記爲答案。但是,在我的sharepoint項目中,出於某種原因,這不適用於IE9(其他瀏覽器完美工作) - 無論我嘗試什麼,IE9都不會關閉按鈕標籤。我會發布我發現的工作。 –

0

adeneo的解決方案在jsFiddle中工作,但不適用於我的SharePoint項目。出於某種原因,IE9拒絕關閉按鈕標籤,而其他瀏覽器完美工作。

這裏是做了工作:

function AddUnsubscribeButton() { 

    var button = document.createElement('button'); 
    button.innerHTML = 'Unsubscribe'; 
    button.onclick = function(){ 
    AddCurrentUserToSubscriptionList("Unsubscribe"); 
    return false; 
    }; 
    var divBtns = $(".divButtons").parent(); 
    divBtns.find('#btnSubscribe').remove(); 

    if(divBtns.first().children().length == 2) { 
    divBtns.first().append(button); 
    } 
} 

希望這會幫助別人一天。