2010-02-03 70 views
3
<span> 
    <img src="img/icon.png" alt="" /> 
    <label><input type="radio" name="" /> Label here</label> 
</span> 

我希望整個<span>是可點擊的,而不僅僅是無線電輸入。我如何使用jQuery來做到這一點?更大的無線電選擇區域

回答

1

這是一個更好的方法。

$('span').click(function() { 
    $(this).find('input').attr({checked:"checked"}); 
}); 

只要記住要添加一個click事件所有跨越。更好的辦法是在跨度和參考上有一堂課。

$('.myClickySpan')... 

<span class='myClickySpan'>... 
0
$("span").click(function(){ 
    var radio = $(this).find('input:radio'); 
    //do whatever with the radio button 
}); 

我相信應該這樣做。

3

您可以通過只使<span><label>,而不是做沒有jQuery的:

<label for="some-id"> 
    <img src="img/icon.png" alt="" /> 
    <input type="radio" name="" id="some-id" /> Label here 
</label> 
+0

..但這仍然不會在IE中工作。 :) – 3zzy 2010-02-03 14:36:37

+0

是的,它會。 IE尊重標籤,就像其他瀏覽器一樣。 – 2010-02-03 17:31:50

5

好,最簡單的解決辦法是換行的一切<label>標籤內,像這樣:

<label for="foo"> 
    <img src="img/icon.png" alt="" /> 
    <input type="radio" name="" id="foo" /> 
</label> 

當您將for屬性指定爲標籤,並將相同的id指定給該字段時,標籤變爲可點擊並將激活相應的輸入。

但是,如果你因爲某些原因需要做的是在jQuery的,這應該工作:

$('span').click(function() { 
    $(this).find('input').click(); 
    return false; 
}); 
+0

如果輸入已經在標籤內,那麼您不需要'for'屬性 – raveren 2010-02-03 14:38:15

+0

@Raveren,您說的沒錯,但我喜歡將它保留在那裏,在我看來它增加了一點可讀性。 – 2010-02-03 14:39:24

+2

等等,這會不會因爲事件冒泡而導致無限循環?還是我誤會了?編輯:只是測試它,它確實。您應該使用.select()而不是.click()。 – user113716 2010-02-03 14:40:40

0

它看起來就像你不使用labelfor屬性。也許這樣做會幫助你

<input type="radio" name="r" id="r" /> 
<label for="r"> 
    <img src="img/icon.png" alt="" /> 
    Label here 
</label>