您好我正在通过收音机输入制作幻灯片,并设计了“上一页”和“下一页”按钮来移动幻灯片。但是,我也想按钮也检查下一个输入。当前幻灯片移动,但未检查下一个输入。我在这里看过这个解决方案: Select next/prev radio button with external button 并试图实现它,但我不能让它工作。这是我的代码:
<form action="" method="post">
<ul class="form-ul" style="position: relative; width: 176px; height: 107px;">
<li style="position: absolute; top: 0px; left: 0px; display: block; z-index: 5; opacity: 1; width: 82px; height: 43px;">
<label>
<input type="radio" name="term_id" value="59" checked="checked">
</label>
</li>
<li style="position: absolute; top: 0px; left: 0px; display: none; z-index: 4; opacity: 0; width: 82px; height: 62px;">
<label>
<input type="radio" name="term_id" value="61">
</label>
</li>
</ul>
<div id="prev" style="float:left;">PREV</div>
<div id="next" style="float:right;">NEXT</div>
</form>
JavaScript的:
$(document).ready(function(){
$('#prev').click(function(){
$('.form-ul').find('li:has(input:checked)').prev().children('input').prop("checked", true);
});
$('#next').click(function(){
$('.form-ul').find('li:has(input:checked)').next().children('input').prop("checked", true);
});
});
答案 0 :(得分:0)
jQuery的.children()
只能找到元素的直接子元素。在您的情况下,单选按钮不是直接子项,因此您需要将其更改为.find()
:
$(document).ready(function(){
$('#prev').click(function(){
$('.form-ul').find('li:has(input:checked)').prev().find('input').prop("checked", true);
});
$('#next').click(function(){
$('.form-ul').find('li:has(input:checked)').next().find('input').prop("checked", true);
});
});
此外,您可以通过减少查询来提高性能。而不是
$('.form-ul).find('li:has(input:checked)')
使用
$('.form-ul li:has(input:checked)')
要使其成为循环,请检查结果集的length
:
$('#next').click(function(){
var $next = $('.form-ul li:has(input:checked)').next();
if(!$next.length) $next = $('.form-ul li').first();
$next.find('input').prop("checked", true);
});