jQuery : 如何select 选中radio?
jQuery : how to select a checked radio?
我在这里想要实现的是在另一台收音机被 selected 时取消隐藏单选按钮。但出于某种原因,我无法成功地 select 选中带有 jQuery select 的单选按钮。我试图找到一个解决方案 基于选中的无线电输入 selector 而不是基于无线电值 selector. 所以使用 $(stuff) .val 不会这样做。
由于 select 或 $(".radio-838 .first input[type=radio]").is(":checked") 无效,以下代码无法正常工作:
if ($(".radio-838 .first input[type=radio]").is(":checked")){
$(".radio-839 .first").show();
}
else{
$(".radio-839 .first").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="formel" id="formtde">
<h3>Name</h3>
<p>
<span class="radio-838">
<span class="first">
<label>
<input type="radio" name="radio-838" value="JOHN">
<span>JOHN</span>
</label>
</span>
<span class="last">
<label>
<input type="radio" name="radio-838" value="BOBBY">
<span>BOBBY</span>
</label>
</span>
</span>
</p>
</div>
<div class="formel" id="formgec">
<h3>Car</h3>
<p>
<span class="radio-839">
<span class="first">
<label>
<input type="radio" name="radio-839" value="FORD">
<span>FORD</span>
</label>
</span>
<label>
<input type="radio" name="radio-839" value="CHEVROLET">
<span>CHEVROLET</span>
</label>
<label>
<input type="radio" name="radio-839" value="PORSCHE">
<span>PORSCHE</span>
</label>
<label>
<input type="radio" name="radio-839" value="NISSAN">
<span>NISSAN</span>
</label>
</span>
</p>
</div>
我也试过了
$(".radio-838 .first input:radio]").is(":checked")
应该这样做:
var checkInput = function(e){
var target = e.target || $('.radio-838');
$(".radio-839 .first")[
$(target).closest('.radio-838').find('.first input').is(':checked') ?
'show':'hide'
]();
};
$('.radio-838').on('change', 'input[type=radio]', checkInput);
$(window).on('load', checkInput);
var checkInput = function(e){
var target = e.target || $('.radio-838');
$(".radio-839 .first")[$(target).closest('.radio-838').find('.first input').is(':checked') ? 'show':'hide']();
};
$('.radio-838').on('change', 'input[type=radio]', checkInput);
$(window).on('load', checkInput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="formel" id="formtde">
<h3>Name</h3>
<p>
<span class="radio-838">
<span class="first">
<label>
<input type="radio" name="radio-838" value="JOHN">
<span>JOHN</span>
</label>
</span>
<span class="last">
<label>
<input type="radio" name="radio-838" value="BOBBY">
<span>BOBBY</span>
</label>
</span>
</span>
</p>
</div>
<div class="formel" id="formgec">
<h3>Car</h3>
<p>
<span class="radio-839">
<span class="first">
<label>
<input type="radio" name="radio-839" value="FORD">
<span>FORD</span>
</label>
</span>
<label>
<input type="radio" name="radio-839" value="CHEVROLET">
<span>CHEVROLET</span>
</label>
<label>
<input type="radio" name="radio-839" value="PORSCHE">
<span>PORSCHE</span>
</label>
<label>
<input type="radio" name="radio-839" value="NISSAN">
<span>NISSAN</span>
</label>
</span>
</p>
</div>
您的主要问题是您的代码仅在加载时执行,而不是在您更改输入时执行。所以这就是我所做的:
- 创建了一个函数,该函数将 show/hide 基于检查的输入。
- 在 window
load
事件和 .radio-838 input
change
事件上触发函数。
我在这里想要实现的是在另一台收音机被 selected 时取消隐藏单选按钮。但出于某种原因,我无法成功地 select 选中带有 jQuery select 的单选按钮。我试图找到一个解决方案 基于选中的无线电输入 selector 而不是基于无线电值 selector. 所以使用 $(stuff) .val 不会这样做。 由于 select 或 $(".radio-838 .first input[type=radio]").is(":checked") 无效,以下代码无法正常工作:
if ($(".radio-838 .first input[type=radio]").is(":checked")){
$(".radio-839 .first").show();
}
else{
$(".radio-839 .first").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="formel" id="formtde">
<h3>Name</h3>
<p>
<span class="radio-838">
<span class="first">
<label>
<input type="radio" name="radio-838" value="JOHN">
<span>JOHN</span>
</label>
</span>
<span class="last">
<label>
<input type="radio" name="radio-838" value="BOBBY">
<span>BOBBY</span>
</label>
</span>
</span>
</p>
</div>
<div class="formel" id="formgec">
<h3>Car</h3>
<p>
<span class="radio-839">
<span class="first">
<label>
<input type="radio" name="radio-839" value="FORD">
<span>FORD</span>
</label>
</span>
<label>
<input type="radio" name="radio-839" value="CHEVROLET">
<span>CHEVROLET</span>
</label>
<label>
<input type="radio" name="radio-839" value="PORSCHE">
<span>PORSCHE</span>
</label>
<label>
<input type="radio" name="radio-839" value="NISSAN">
<span>NISSAN</span>
</label>
</span>
</p>
</div>
我也试过了 $(".radio-838 .first input:radio]").is(":checked")
应该这样做:
var checkInput = function(e){
var target = e.target || $('.radio-838');
$(".radio-839 .first")[
$(target).closest('.radio-838').find('.first input').is(':checked') ?
'show':'hide'
]();
};
$('.radio-838').on('change', 'input[type=radio]', checkInput);
$(window).on('load', checkInput);
var checkInput = function(e){
var target = e.target || $('.radio-838');
$(".radio-839 .first")[$(target).closest('.radio-838').find('.first input').is(':checked') ? 'show':'hide']();
};
$('.radio-838').on('change', 'input[type=radio]', checkInput);
$(window).on('load', checkInput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="formel" id="formtde">
<h3>Name</h3>
<p>
<span class="radio-838">
<span class="first">
<label>
<input type="radio" name="radio-838" value="JOHN">
<span>JOHN</span>
</label>
</span>
<span class="last">
<label>
<input type="radio" name="radio-838" value="BOBBY">
<span>BOBBY</span>
</label>
</span>
</span>
</p>
</div>
<div class="formel" id="formgec">
<h3>Car</h3>
<p>
<span class="radio-839">
<span class="first">
<label>
<input type="radio" name="radio-839" value="FORD">
<span>FORD</span>
</label>
</span>
<label>
<input type="radio" name="radio-839" value="CHEVROLET">
<span>CHEVROLET</span>
</label>
<label>
<input type="radio" name="radio-839" value="PORSCHE">
<span>PORSCHE</span>
</label>
<label>
<input type="radio" name="radio-839" value="NISSAN">
<span>NISSAN</span>
</label>
</span>
</p>
</div>
您的主要问题是您的代码仅在加载时执行,而不是在您更改输入时执行。所以这就是我所做的:
- 创建了一个函数,该函数将 show/hide 基于检查的输入。
- 在 window
load
事件和.radio-838 input
change
事件上触发函数。