2012-10-17 88 views
0

有沒有人知道爲什麼,在這個例子中,點擊事件不是隻在IE8中被觸發?基本上,單擊後的css樣式(.zui-act)應該更改labelbackground-color在IE8中沒有觸發Jquery函數點擊事件

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'); 
}); 

回答

1

我唯一的猜測是IE8不會觸發隱藏元素上的事件。我想是有道理的。你可以採用jQuery UI buttonset採用的方法,並將單選按鈕從屏幕上移開。 Like so

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

然後到位添加到您的$.radio方法a.hide()

a.addClass('zui-radio'); 
1

更改 click事件 change,它應該工作。您很可能在兼容模式下運行,其中有一個錯誤。

爲什麼使用過濾器時,你可以使選擇器處理名稱?

var myName = "a"; 
var myRadios = $('input[name="' + myName +'"]'); 
+0

不工作。在compat模式或標準模式下。 –

+0

謝謝,使用名稱效果更好,但瑞恩提到,「更改」不起作用,我沒有在兼容模式 – greener

+0

大聲笑,我運行它在IE9而不是IE8當我測試。我以爲我改變了模式。 :) – epascarello