当全部选择值时,JS on change不适用

时间:2017-11-29 19:35:17

标签: javascript jquery

我有这段代码

<input type="radio" name="type" value="premium">
<input type="radio" name="type" value="free">

<div id="paypremium">Premium infos</div>

$('[name="type"]').on('change', function() {
        $('#paypremium').toggle(this.value == 'premium');
      }).change();

如果我检查相关的单选按钮,所需的div显示就好了。 但是,如果预先选中单选按钮,则不会显示相关的div ...仅当我主动单击单选按钮时它才有效。

如果预先选中单选按钮,如何显示div?

编辑:问题已经解决,但我意识到另一段代码阻止代码工作

    $(document).ready(function(){
            $("a[rel^='prettyPhoto']").prettyPhoto();
        });

        $(document).ready(function(){
  $('[name="type"]').on('change', function() {
    $('#paypremium').toggle(this.value == 'premium');
  }).filter(':checked').change();
});

它有什么问题吗?

1 个答案:

答案 0 :(得分:2)

使用.change()您的代码将遍历所有[name="type"]无线电输入,并且它会为您提供最后一个的操作..这意味着如果您的premium无线电不是它消失的最后一个收音机..你需要使用.filter(':checked').change();

$(document).ready(function(){
  $('[name="type"]').on('change', function() {
    $('#paypremium').toggle(this.value == 'premium');
  }).filter(':checked').change();
});
#paypremium{
  display : none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="type" checked value="premium">
<input type="radio" name="type" value="free">

<div id="paypremium">Premium infos</div>