Javascript/jQuery issue
Javascript/jQuery issue
我正在尝试制作单选按钮,当它们处于活动状态时,它会显示下拉列表。我已经可以显示它了,但当我点击另一个单选按钮时,它会显示一个,但不会隐藏另一个。。。代码:
<input type='radio' name='op' onchange='$("#ban_length").fadeToggle();'/>
<input type='radio' name='op' onchange='$("#rank_list").fadeToggle();'/>
JavaScript部分:
$(document).ready(function() {
$('#op1').change(function(){
$("#ban_length").fadeIn();
$("#rank_list").fadeOut();
});
$('#op2').change(function(){
$("#ban_length").fadeOut();
$("#rank_list").fadeIn();
});
});
HTML:
<input type='radio' name='op' id='op1'/>
<input type='radio' name='op' id='op2'/>
<div id="ban_length">demo</div>
<div id="rank_list">demo</div>
演示:
http://jsfiddle.net/b2UPt/1/
<input type='radio' name='op' onchange='$("#ban_length").fadeIn();$("#rank_list").fadeOut();'/>
<input type='radio' name='op' onchange='$("#rank_list").fadeIn();$("#ban_length").fadeOut();'/>
尽管我建议从元素本身删除javascript,给它们id
s,并用$(theID).change(function(){...
将javascript添加到一个单独的脚本中。
或者,如果希望它们立即隐藏,可以使用hide
而不是fadeOut
。
还有最后一个建议。如果有很多这样的元素,而不仅仅是2个,我会为你正在淡入的每个元素添加一个共享类。然后,不在每个元素上使用hide
,只需调用$(".className").hide()
来隐藏任何可能可见的元素。
change
事件仅在单击的元素(即现在启用的单选按钮)上触发。当单选按钮被自动禁用时,它不会被激发。
因此,每次其中一个按钮触发change
事件时,您需要检查所有单选按钮。不过,你需要能够区分它们,所以从给它们id
开始:
<input type="radio" name="op" id="radio_ban_length" />
<input type="radio" name="op" id="radio_rank_list" />
之后,您可以使用它们来切换正确的下拉菜单:
$('input:radio').change(function() {
var id = $(this).attr("id");
if (id === "radio_ban_length") {
$("ban_length").fadeIn();
$("rank_list").fadeOut();
} else {
$("rank_list").fadeIn();
$("ban_length").fadeOut();
}
});
或者,如果你喜欢挑战,或者你可能有两个以上的收音机,你可以使用filter()
和:checked
来做这样的事情:
function getDropdownId(radioId) {
return '#' + radioId.replace(/^radio_/, '');
}
var radios = $('input:radio');
radios.change(function() {
// Checked radio's:
radios.filter(':checked').each(function(){
var id = getDropdownId($(this).attr('id'));
$(id).fadeIn();
});
// Unchecked radio's:
radios.filter(':not(:checked)').each(function(){
var id = getDropdownId($(this).attr('id'));
$(id).fadeOut();
});
});
请注意,此方法确实依赖于与下拉菜单的id相匹配的单选按钮的id(例如,ban_length
的radio_ban_length
)。
更新:这是一个的实时示例:http://jsfiddle.net/55ANB/1/
将id="ban"和id="rank"添加到您的无线电
在jquery部分,将单击处理程序添加到单选按钮
$(':radio').click(function() {
if ($(this).attr("id") == "ban") $("ban_length").fadeToggle();
if ($(this).attr("id") == "rank") $("rank_length").fadeToggle();
});
- 使用Jquery Issue垂直重新排序Divs
- 创建了一个选项卡,但点击时不会起作用-jQuery issue/newbie
- jQuery find() Issue
- Jquery :gt(value) issue
- Jquery Colorbox issue with firefox
- WordPress Blog - jQuery Issue
- jQuery next().addClass() and prev().addClass() issue
- Jquery ajax addClass issue
- Ajax POST jQuery issue
- jquery next() issue
- IE8 issue with jQuery attr()
- JQuery .hover() issue
- jQuery nested each/Ajax issue
- Jquery issue with getJSON
- jQuery and css issue
- jQuery - setInterval issue
- Javascript/jQuery String issue with IE8
- jQuery waypoints static html/ js issue
- jQuery noConflict issue 1.7.0 and 1.10.2
- clearInterval issue (jquery, javascript)