日期:2014-05-16  浏览次数:20386 次

jq对radio的控制问题
需要达到的效果很简单,就是有两个单选扭,后面分别对应两个下拉菜单,下拉菜单display:none,选中哪个radio,后面的下拉菜单就显示出来。源码在下面:
HTML code


<html>
<head></head>
<style>
    .nclassify{float:left;margin:10px}
    .nclassify select{display:none}
</style>
<body>
    <span class="nclassify">
        <input id="ncsn1" type="radio" name="ncsn" value="政府新闻" /><label>政府新闻</label>
        <select id="snc1">
            <option selected>全部</option>
            <option value="政府新闻类型一">政府新闻类型一</option>
            <option value="政府新闻类型二">政府新闻类型二</option>
            <option value="政府新闻类型三">政府新闻类型三</option>
            <option value="政府新闻类型四">政府新闻类型四</option>
            <option value="政府新闻类型五">政府新闻类型五</option>
        </select>
    </span>
    <span class="nclassify">
        <input id="ncsn2" type="radio" name="ncsn" value="企业新闻" /><label>企业新闻</label>
        <select id="snc2">
            <option selected>全部</option>
            <option value="企业新闻类型一">企业新闻类型一</option>
            <option value="企业新闻类型二">企业新闻类型二</option>
            <option value="企业新闻类型三">企业新闻类型三</option>
            <option value="企业新闻类型四">企业新闻类型四</option>
            <option value="企业新闻类型五">企业新闻类型五</option>
        </select>
    </span>
</body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
    <script>
        $(function(){
            $("input:radio[name='ncsn']:checked").siblings("select").css("display","block");
        });    
    </script>
</html>




现在问题来了,当选中radio后,对应的select不会立刻出来,需要刷新一下才有效果,如何能让select实时根据所选radio展现呢?

------解决方案--------------------
<script>
$(function(){
$("input:radio").click(function(){
$(this).siblings("select").css("display","block");
});
});
</script>
------解决方案--------------------
JScript code
<script type="text/javascript">
    $(function(){
        $("input:radio").click(function(){
            $("select").hide();
            $(this).siblings("select").show();
        });
    });
</script>

------解决方案--------------------
探讨
JScript code
<script type="text/javascript">
$(function(){
$("input:radio").click(function(){
$("select").hide();
$(this).siblings("select").show();
}……

------解决方案--------------------
楼主转变一下思维方式:用JQ设置display:block,还不如用show()简单。。。
个人是这么理解的

------解决方案--------------------
$(function(){
$("input[name='ncsn']").click(function(){
$(this).siblings("select").show();
$(this).parent().siblings().find("select").hide();
});
});