2011-01-12 48 views
13

Simple html & jQueryjQuery Toggle div với nút radio

<label><input id="rdb1" type="radio" name="toggler" value="1" />Money</label> 
<label><input id="rdb2" type="radio" name="toggler" value="2" />Interest</label> 

<div id="blk-1" style="display:none"> 
    ... 
</div> 
<div id="blk-2" style="display:none"> 
    ... 
</div> 

$(function() { 
    $("[name=toggler]").each(function(i) { 
     $(this).change(function(){ 
      $('#blk-1, #blk-2').hide(); 
      divId = 'blk-' + $(this).val(); 
      $("#"+divId).show('slow'); 
     }); 
    }); 
}); 

Hiệu quả chuyển đổi mong muốn không hoạt động mặc dù. Nhấp vào một hộp radio sẽ không ẩn được.

Bất kỳ ý tưởng nào?

+0

nhưng bạn không ẩn nút radio khác trong mã của mình, bạn chỉ đang hiển thị một trong các div? –

+0

Bạn không cần mỗi mã –

+1

Mã của bạn làm việc cho tôi: http://jsfiddle.net/Reqyx/ (Như những người khác đã lưu ý, bạn không cần '.each()'. Ngoài ra, bạn nên khai báo biến với 'var'.) – user113716

Trả lời

27
<label><input id="rdb1" type="radio" name="toggler" value="1" />Money</label> 
<label><input id="rdb2" type="radio" name="toggler" value="2" />Interest</label> 

<div id="blk-1" class="toHide" style="display:none"> 
    money 
</div> 
<div id="blk-2" class="toHide" style="display:none"> 
    interest 
</div> 

$(function() { 
    $("[name=toggler]").click(function(){ 
      $('.toHide').hide(); 
      $("#blk-"+$(this).val()).show('slow'); 
    }); 
}); 

như trong http://www.jsfiddle.net/eKFrW/

+0

Giải pháp tuyệt vời. Nó sẽ còn lớn hơn nếu nó cũng cho thấy div được kiểm tra trên onload –

+1

Bạn có thể sử dụng @MrRebel: '$ (" # blk - "+ $ (" [name = toggler]: checked "). Val()) .show(); ' – Thony

+1

Tại sao lại sử dụng chức năng .click? Vì vậy, có một hiệu ứng, khi nhấp lại vào mục đã chọn. Sử dụng [.change] (https://api.jquery.com/change/) chức năng này chỉ thực hiện, nếu có sự thay đổi trong lựa chọn. Hoa hậu tôi một cái gì đó? – sschoof

1

Heres những gì bạn muốn tôi nghĩ. Để bắt đầu, tôi sẽ làm cho nút radio đầu tiên được chọn và div đầu tiên hiển thị. Sau đó, nút chuyển đổi sẽ hoán đổi số div

$("input:radio").click(function(){   
    $('#blk-1').toggle(); 
    $('#blk-2').toggle(); 
});