单选按钮改变事件和改进类似的功能
Radio button change events and improving similar functions
我正在寻找一种更智能的方法来重用具有类似目的的函数。例如,我想改变不同的单选按钮,在不同的div上切换隐藏类。
JSFiddle联系
如何将JQuery变成一个可重用的函数,
<form>
<label>Enable One</label>
<input type="radio" name="one" value="yes" checked class="eOne">Yes
<input type="radio" name="one" value="no" class="enBg">No</form>
<form>
<label>Enable Two</label>
<input type="radio" name="two" value="yes" checked class="eTwo">Yes
<input type="radio" name="two" value="no" class="enBrand">No</form>
<form>
<label>Enable Three</label>
<input type="radio" name="three" value="yes" checked class="eThree">Yes
<input type="radio" name="three" value="no" class="enS">No</form>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
div {
width: 100px;
height: 100px;
}
.one {
background: red;
}
.two {
background: green;
}
.three {
background: blue;
}
.hide {
display: none;
}
$(".eOne").change(function () {
$('.one').toggleClass("hide");
});
$(".eTwo").change(function () {
$('.two').toggleClass("hide");
});
$(".eThree").change(function () {
$('.three').toggleClass("hide");
});
另外,由于某些原因,在演示中(但不是在我的实时版本中),更改功能不会切换类,除非我单击no,然后单击yes。
为你的html使用class:
<form>
<label>Enable One</label>
<input type="radio" name="one" value="yes" class="one" checked />Yes
<input type="radio" name="one" value="no" class="one" />No
</form>
<form>
<label>Enable Two</label>
<input type="radio" name="two" value="yes" class="two" checked />Yes
<input type="radio" name="two" value="no" class="two" />No
</form>
<div class="one"></div>
<div class="two"></div>
为javascript编写函数:
/*
* Bind a change event handler to a radio-input
* @param cls - selector string to input AND to-change div
*/
function bindChangeHandler(cls) {
$('input.' + cls).change(function () {
var element = $(this),// get Input element
name = element.val(), // get Input element name
is_checked = element.prop('checked'); // get state of radio box
// return if a deselect triggered the event (may be unnecessary)
if (!is_checked) return;
// change class of div-box according to checked radio-box
if (name == 'yes') {
$('div.' + cls).removeClass('hide');
} else {
$('div.' + cls).addClass('hide');
}
});
}
$(document).ready(function(){
bindChangeHandler('one');
bindChangeHandler('two');
});
HTML
<form>
<label>Enable One</label>
<input type="radio" name="one" value="yes" class="eOne" checked>Yes
<input type="radio" name="one" value="no" class="enBg">No
<br /><label>Enable Two</label>
<input type="radio" name="two" value="yes" checked class="eTwo">Yes
<input type="radio" name="two" value="no" class="enBrand">No
<br /><label>Enable Three</label>
<input type="radio" name="three" value="yes" checked class="eThree">Yes
<input type="radio" name="three" value="no" class="enS">No
</form>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
我没有改变任何CSS,但改变了你的Javascript代码。看看这个。没有必要使用.hideclass类,因为我们已经为此内置了一个方法。toggle()方法。如果您想在单击单选按钮时立即隐藏它,那么只需将所有toggle()更改为toggle(50)。此更改将在50毫秒内隐藏div框。
$("input[name='one']").change(function(){
$(".one").toggle();//add a number in toggle method to have a small animation effect :)
});
$("input[name='two']").change(function(){
$(".two").toggle();
});
$("input[name='three']").change(function(){
$(".three").toggle();
});
我也更新了js小提琴上的代码。也许这对你有帮助:)
我喜欢米勒的回答。下面是用一个允许更一般用途的回调重写的相同代码:
function hide(cls, name) {
// change class of div-box according to checked radio-box
if (name == 'yes') {
$('div.' + cls).removeClass('hide');
} else {
$('div.' + cls).addClass('hide');
}
}
/*
* Bind a change event handler to a radio-input
* @param cls - selector string to input AND to-change div
*/
function bindChangeHandler(cls, callback) {
$('input.' + cls).change(function () {
var element = $(this),// get Input element
name = element.val(); // get Input element name
callback(cls, name);
});
}
$(document).ready(function(){
bindChangeHandler('one', hide);
bindChangeHandler('two', hide);
});
相关文章:
- 在窗口改变方向时调整内容大小之前激发功能
- 如何改变“;活的“;至“;关于“;在这个脚本中,jquery具有相同的功能
- 移动设备上的“调色精灵”禁用了使用相位器改变精灵状态的功能
- 对象的属性在改变时激活功能
- Jquery的点击功能在3个类之间改变.为什么不工作呢?
- 改变后台javascript功能不工作
- 改变Jquery滑块来执行一个功能
- Jquery点击处理布尔值改变后的额外功能
- 如何创建一个按钮来改变从“全选”的功能选择none"在此Javascript代码中
- 输入字段值在单击功能中不改变
- 改变输入的火灾功能;使用jQuery标记(复选框/文本框)
- 为什么点击功能不工作后,我改变了一个按钮的类
- 我如何改变回innerhtml与jQuery在一个点击功能
- “arguments"属性在Chrome的功能改变
- 改变图像加载的功能
- 一键改变功能参数
- 解释";您可以具有改变其他功能的功能"
- 如何改变Zimbra发送按钮的功能
- 改变功能范围
- 在车把上点击改变功能