0

この例では、クリック イベントが IE8 でのみ発生しない理由を知っている人はいますか? 基本的に、クリック ( ) 後の css スタイルは の.zui-actを変更する必要がbackground-colorありlabelます。

JSFIDDLE

<div style="width:300px;">
   <input type="radio" name="a" id="a" value="alpha" />
   <label for="a">Alpha</label>
   <input type="radio" name="a" id="b" value="bravo" />
   <label for="b">Bravo</label>
   <input type="radio" name="a" id="c" value="charly" />
   <label for="c">Charly</label>
</div>​

$.radio = function(e) {
    var a = $('input:radio').filter(function(index) { return $(this).attr('name')==e });
    a.hide();
    a.siblings('label').addClass('zui-btn');
    a.click(function(){
        var f = $(this).attr('id');
        $('label').removeClass('zui-act').filter(function(index) {
            return $(this).attr('for')==f
        }).addClass('zui-act');
    });
}

$(document).ready(function(e) {
    $.radio('a'); 
});
4

2 に答える 2

1

clickイベントをに変更するchangeと、動作するはずです。ほとんどの場合、バグのある互換モードで実行しています。

そして、セレクターに名前を処理させることができるのに、なぜフィルターを使用するのでしょうか?

var myName = "a";
var myRadios = $('input[name="' + myName +'"]');
于 2012-10-17T23:30:45.173 に答える
1

私の唯一の推測は、IE8 は非表示の要素でイベントをトリガーしないということです。理にかなっていると思います。jQuery UI ボタン​​セットのアプローチを採用して、ラジオ ボタンを画面外に移動することができます。そのように

.zui-radio {
    position:absolute;
    left:-9999px;
}

$.radio次に、これをメソッドの代わりに追加しますa.hide()

a.addClass('zui-radio');
于 2012-10-17T23:40:06.990 に答える