0

ボタンが使用されるとすぐにボタンのアイコンを変更しようとしています。コードは非常に単純です。

<a id='just-a-link' target="_blank" href="http://google.com">Google</a>

jQuery('#just-a-link').button().bind('click', function() {

    var icons = jQuery(this).button("option", "icons");
    icons.primary = 'ui-icon-plus';

    jQuery(this).button("option", "icons", icons);

});

ただし、Internet Explorer ではリンクが起動されません。したがって、リンクをクリックするとアイコンは変わりますが、ページは開きません

これを解決するために何を提案しますか?

http://jsfiddle.net/YnwnU/

jQuery(this).button("option", "icons", icons);フィドルでは、2番目のボタンがリンクを開くため、バグが発生することがわかります。

4

1 に答える 1

2

もう少し調べてみると.button()、すでに確立されている呼び出しの中で呼び出し.button()ているため、たまたま -href- または eventHandlers が既に設定されているものを強制終了しているように見えます。(この場合、新しいウィンドウとリンクを開きます。

jQuery('#just-a-link').button().bind('click', function() {
    var icons = jQuery(this).button("option", "icons");
    icons.primary = 'ui-icon-plus';

    // Adding this makes it work in IE for at least the code you currently have
    window.open($(this).attr('href'));
});

すべての外部リンクにアイコンを追加して、それらを新しいウィンドウで開こうとしているように思えます。代わりにこれをやらないのはなぜですか?

var icons = jQuery(this).button("option", "icons");
    icons.primary = 'ui-icon-plus';

jQuery('a[target="_blank"]').button().button("option", "icons", icons);

クリックをバインドする必要はありません...すべてのアンカーtarget="_blank"をボタンに設定し、アイコンを指定するだけです。これにより、IE やその他のブラウザーでも自動的に機能します。試してごらん。

更新された jsFiddle デモ

于 2012-08-30T15:13:49.207 に答える