简体   繁体   English

jQuery显示/隐藏的div选择相关的单选按钮

[英]jquery show / hide of div on selection of related radio button

This is my jquery code 这是我的jQuery代码

$(document).ready(function() {
$("div.imgDisp").hide();
$('[id="' + $(":radio:checked").val()+'"]').show();
    $('input[name="rdNumber"]:radio').click(function() {
     $("div.imgDisp").fadeOut('slow');
    $('[id="' + $(this).val()+'"]').fadeIn('slow');
});
});

this is html code 这是HTML代码

<div class="wrapper"> <strong><span>*</span> Number</strong>

<div class="formText">
    <input type="radio" name="rdNumber" value="100" />100
    <input type="radio" name="rdNumber" value="200" checked="checked"/>200
    <input type="radio" name="rdNumber" value="300" />300</div>
</div>

<input type="radio" name="rdImage" value="preExisting" />Choose from images below
<div id="100" class="imgDisp">
<div class="heading">10x10</div>
<input type="radio" name="preExistingImage" id="100" value="10x10-1"
/>
<img src="1-1.png">
<input type="radio" name="preExistingImage" id="100" value="10x10-2" />
<img src="1-2.png">
</div>
<div id="200" class="imgDisp">
<div class="heading">10x20</div>
<input type="radio" name="preExistingImage" id="200" value="10x20-1"
/>
<img src="2-1.png">
<input type="radio" name="preExistingImage" id="200" value="10x20-2" />
<img src="2-2.png">
</div>
<div id="200" class="imgDisp">
<div class="heading">20x10</div>
<input type="radio" name="preExistingImage" id="200" value="20x10-1"
/>
<img src="3-1.png">
<input type="radio" name="preExistingImage" id="200" value="20x10-2" />
<img src="3-2.png" width="20" height="10">
</div>

The code is working fine on choosing 100 radio button it is showing div with id = 100 and on selecting id = 200 it is showing two divs with id = 200. here check this fiddle http://jsfiddle.net/vDBDA/2/ 代码在选择100单选按钮时工作正常,它显示id为100的div,在选择id = 200时显示id为200的两个div。在这里检查此提琴http://jsfiddle.net/vDBDA/2/

now there are two queries 1. I use duplicate id to show similar type of divs on selection of radio button like this code 现在有两个查询1.在使用单选按钮时,我使用重复的id来显示类似的div类型,例如此代码

<div id="200" class="imgDisp">

though it is working fine but I know duplicate id's is a problem. 虽然工作正常,但我知道重复的ID是个问题。 how can I fix it? 我该如何解决?

  1. when the page loads number 200 is checked by default.. and here in this fiddle it is displaying the divs associated with radio button 200 but in actual programming and in localhost/browser it does not show.. What could be the reason? 默认情况下,当页面加载数为200时被选中。.在这里,它正在显示与单选按钮200相关联的div,但是在实际编程中以及在localhost /浏览器中,它都不会显示。.可能是什么原因?

All your help will be golden. 您的所有帮助将是金。 thanks guys in advance 提前谢谢大家

ID should be unique if you want to apply some effects to some group of elements then have all those elements in one class. 如果要对某些元素组应用某些效果,然后将所有这些元素归为一个类,则ID应该是唯一的。 and for applying effect you need to specify using $('.classname').fadein(); 为了应用效果,您需要使用$('.classname').fadein();进行指定$('.classname').fadein();

I have slightly edited your fiddly pls check http://jsfiddle.net/vDBDA/7/ 我已经稍微修改了您的相关检查http://jsfiddle.net/vDBDA/7/

只需添加class并删除DOM的ID ,然后使用.on() jQuery方法即可将事件绑定到动态加载的内容上。

您可以使用类代替ID,因为ID对于一个HTML页面必须是唯一的。

You can assign a class to each element that you want per grouping. 您可以为每个分组所需的每个元素分配一个类。 You may need to then iterate over those elements using an each function. 然后,您可能需要使用每个函数迭代这些元素。

$(selector).each( function(){
     //hide or show...etc
});

Simply add this class in your css file 只需在您的css文件中添加此类

.hide_div{
    display: none;
}

While hiding any div, apply this property to the div and if you want to show the div then user show_div as class. 隐藏任何div时,将此属性应用于div,如果要显示div,则将show_div作为类。 Use addClass for applying the CSS to that DIV. 使用addClass将CSS应用于该DIV。

.show_div{
    display: block;
}
    i try your code...and here is what i did...

    <div class="wrapper"> <strong><span>*</span> Number</strong>

        <div class="formText">
            <input type="radio" name="rdNumber" value="100" />100
            <input type="radio" name="rdNumber" value="200" checked="checked" />200
            <input type="radio" name="rdNumber" value="300" />300</div>
    </div>
    <input type="radio" name="rdImage" value="preExisting" />Choose from images below
    <div class="100 imgDisp" >
        <div class="heading">10x10</div>
        <input type="radio" name="preExistingImage" class="100" value="10x10-1"
        />
        <img src="1-1.png">
        <input type="radio" name="preExistingImage" class="100" value="10x10-2" />
        <img src="1-2.png">
    </div>
    <div class="200 imgDisp">
        <div class="heading">10x20</div>
        <input type="radio" name="preExistingImage" class="200" value="10x20-1"
        />
        <img src="2-1.png">
        <input type="radio" name="preExistingImage" class="200" value="10x20-2" />
        <img src="2-2.png">
    </div>
    <div class="200 imgDisp" >
        <div class="heading">20x10</div>
        <input type="radio" name="preExistingImage" class="200" value="20x10-1"
        />
        <img src="3-1.png">
        <input type="radio" name="preExistingImage" class="200" value="20x10-2" />
        <img src="3-2.png" width="20" height="10">
    </div>

$(document).ready(function () {
    $(".imgDisp").hide();
    $('.'+$(":radio:checked").val()).show();
    $('input[name="rdNumber"]:radio').click(function () {
        $("div.imgDisp").fadeOut('slow');
        $('.'+$(this).val()).fadeIn('slow');
    });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM