2

我正在尝试为每个 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 没有呈现结束标记。

4

2 回答 2

1

您实际上是错误地设置了元素的属性。按钮元素没有按钮类型,因此您应该使用具有 atype=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 中添加一些奇怪的东西,正确的方法是使用点击事件处理程序,如上所示。

于 2013-02-04T13:14:54.533 回答
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);
  } 
}

希望有一天这会对某人有所帮助。

于 2013-02-04T16:35:00.577 回答