显示附加到选项的隐藏div

时间:2012-12-30 17:40:28

标签: jquery forms

我想根据所选的单选按钮显示隐藏的div,例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $(".option_select").click(function() {
            if ($('#extra_options').is(":hidden")) {
                $('#extra_options').slideDown("slow");
            }      
        });
    }); 
</script>        
</head>

<body>
<div id="extra_options" style="display:none;">
<input type="radio" name="ExtraOption" value="1" /> Extra option 1<br />
<input type="radio" name="ExtraOption" value="2" /> Extra option 2<br />
<input type="radio" name="ExtraOption" value="3" /> Extra option 3<br />
</div>

<form action="#" method="post">
<input type="radio" name="Option" class="option_select" value="1" /> Option 1<br />
<input type="radio" name="Option" class="option_select" value="2" /> Option 2<br />
<input type="radio" name="Option" class="option_select" value="3" /> Option 3<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

但我真的很想将#extra_options div附加到所选的单选按钮(“选项1,选项2,选项3等”),所以它看起来更像是“这些额外的选项与此选项一起使用#”。我我想我可以在每一个单选按钮上附加一个#extra_optionsX div,但我认为有更好的方法。任何想法?

TIA

2 个答案:

答案 0 :(得分:1)

您可以使用

附加它
if ($('#extra_options').is(":visible")) {
    $('#extra_options').hide();
}
$(this).next().after($('#extra_options'));
$('#extra_options').slideDown("slow");

(编辑:添加隐藏/显示更改所选选项时)

答案 1 :(得分:0)

工作代码为here

$(document).ready(function() {
    $('form > input').click(function(){
        var t = $(this),
            extra = $('#extra_options');

        $('input[value=' + t.val() + ']', extra)
            .parent()
            .show()
            .siblings()
            .hide();

    });
});​

最好将所有带有文字的输入包装在<label>中,例如:<label><input type="radio" name="foo" value="bar" /> Its value here </label>