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

実際には、要素のプロパティを間違って設定しています。ボタン要素にはボタン タイプがないため、タイプを持つ入力要素を使用するか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 に奇妙な点が追加されるようです。これを行う適切な方法は、上記のようにクリック イベント ハンドラーを使用することです。

于 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 に答える