按钮在IE9中无法正确呈现

时间:2013-02-04 12:34:44

标签: javascript jquery internet-explorer

我试图为每个jQuery添加一个按钮。它在其他浏览器中运行得很好,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没有呈现结束标记。

2 个答案:

答案 0 :(得分: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);
    }
}

似乎直接在元素的属性中添加click函数会在IE中添加一些奇怪的东西,正确的方法是使用click事件处理程序,如上所述。

答案 1 :(得分: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);
  } 
}

希望有一天这会有所帮助。