2012-02-14 103 views
0

我希望能夠點擊一個div並讓它選擇一個單選按鈕。我有它在webkit中工作...但不是FF。通過點擊div選擇收音機

完整的例子可以在這裏找到:

http://acgidev.acgisoftware.com/clicktest2.html#

<div class="aaEcmTemplateThumbWrapper"> 
    <div class="aaEcmTemplateTitle"><input type="radio" tabindex="4" class="aaEcmMsgRadio" value="EC_ORDER_CONFIRMATION" name="p_template_message_id">EC Order Confirmation 
</div> 
    <div class="aaEcmTemplateThumb"><a class="aaIframePopup" href="#"><span class="aaMagGlass"></span></a> 
    </div> 
</div> 
<div class="aaEcmTemplateThumbWrapper"> 
    <div class="aaEcmTemplateTitle"><input type="radio" tabindex="4" class="aaEcmMsgRadio" value="EC_ORDER_CONFIRMATION" name="p_template_message_id">EC Order Confirmation 
</div> 
    <div class="aaEcmTemplateThumb"><a class="aaIframePopup" href="#"><span class="aaMagGlass"></span></a> 
    </div> 
</div> 
<div class="aaEcmTemplateThumbWrapper"> 
<div class="aaEcmTemplateTitle"><input type="radio" tabindex="4" class="aaEcmMsgRadio" value="EC_ORDER_CONFIRMATION" name="p_template_message_id">EC Order Confirmation 
</div> 
    <div class="aaEcmTemplateThumb"><a class="aaIframePopup" href="#"><span class="aaMagGlass"></span></a> 
    </div> 
</div> 

,我使用了jQuery是:

<script type="text/javascript"> 
    //check on div click 
$("div.aaEcmTemplateThumbWrapper").live("click",function(event) { 
    var target = $(event.target); 
    if (target.is('input:radio')) return; 

    var checkbox = $(this).find("input[type='radio']"); 

    if(checkbox.attr("checked") == ""){ 
     checkbox.attr("checked","true"); 
    } else { 
     checkbox.attr("checked",""); 
    } 
    $("div.aaEcmTemplateThumbWrapper").click(function() { 

     $('input:radio').attr('checked',false); 

    }); 
}); 

</script> 
+5

你爲什麼不使用'

+1

標籤是要走的路,你的代碼工作在FF中找到(http://jsfiddle.net/kLL5E/) – j08691 2012-02-14 03:26:17

+0

另外,'attr()'爲此目的已被替換爲'prop()',所以你可以做'checkbox.prop( '檢查', '真')'。此外,這行'checkbox.attr(「checked」)==「」'沒有多大意義。 – elclanrs 2012-02-14 03:37:37

回答

1

我想你一定有<label> s的去for屬性:

<input type="radio" value="1" id="radio1"><label for="radio1">Radio 1</label> 
<input type="radio" value="2" id="radio2"><label for="radio2">Radio 2</label> 
<input type="radio" value="3" id="radio3"><label for="radio3">Radio 3</label> 

注意,一個<label>小號id屬性的for屬性必須在<input>匹配「。

+0

儘管這並不直接回答這個問題,但我完全同意這種做法:應始終嘗試堅持語義和Web標準,而不是每次都重新發明輪子... – Lucius 2012-02-14 09:04:10

+0

我認爲標籤只會允許我點擊在實際無線電輸入的div上 - 對嗎?我應該更具體 - 我試圖點擊div「aaEcmTemplateThumb」並讓它選擇收音機。謝謝你們......對不起,沒有更具體的。 – user1208198 2012-02-14 13:21:40

0

這是一個工作示例。

$('.content').click(function() {  
 
\t $('.tlRadio').prop('checked', false); 
 
    var val = $(this).find('input:radio').prop('checked')?false:true; 
 
    $(this).find('input:radio').prop('checked', val); 
 
\t checkedValue = $(this).find('input:radio').val(); 
 
\t console.log(checkedValue); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="content"> 
 
    Div 1 
 
    <input type="radio" class="tlRadio" id="radio1" value="test" /> 
 
</div> 
 
<div class="content"> 
 
    Div 2 
 
    <input type="radio" class="tlRadio" id="radio2" value="test2" /> 
 
</div> 
 
<div class="content"> 
 
    Div 3 
 
    <input type="radio" class="tlRadio" id="radio3" value="test3" /> 
 
</div> 
 
<div class="content"> 
 
    Div 4 
 
    <input type="radio" class="tlRadio" id="radio4" value="test4" /> 
 
</div>

+0

感謝您使用此代碼段,這可能會提供一些即時幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 – 2017-07-19 11:58:47

+0

這是我的第一篇文章,所以我沒有太多關於流量的想法。我一定會在未來增加細節。謝謝 – 2017-08-29 10:26:00