在javascript中单击radiobutton时获取回调的最佳方法
我有如下HTML:在javascript中单击radiobutton时获取回调的最佳方法,javascript,Javascript,我有如下HTML: <input type="radio" name="v" value="1"> 1<br> <input type="radio" name="v" value="2"> 2<br> <input type="radio" name="v" value="3" checked> 3<br> 我想知道如何监控所有这些单选按钮。我可以有三个以上 我考虑的一件事是为所有这些函数都提供一个onclick函数。这
<input type="radio" name="v" value="1"> 1<br>
<input type="radio" name="v" value="2"> 2<br>
<input type="radio" name="v" value="3" checked> 3<br>
我想知道如何监控所有这些单选按钮。我可以有三个以上
我考虑的一件事是为所有这些函数都提供一个onclick函数。这是正确的方法,还是当单选按钮集发生更改时,有一种更简洁的方法来注册公共javascript函数?您可以向这些元素的父元素添加事件侦听器。事件在DOM树上冒泡,因此您只需要附加一个处理程序
请参见此处的示例:您可以将事件侦听器添加到这些元素的父级。事件在DOM树上冒泡,因此您只需要附加一个处理程序 请参见此处的示例: 这是使用jquery可以做到的
除了Markandey的注释之外,使用jquery也可以这样做:如果使用jquery,那么可以使用属性选择器而不是类名,而不需要太多麻烦,这样代码就最少了 $input[name=v]。单击我的回调 在mycallback函数中,“this”将引用已单击的元素 e、 g 将onclick属性放在每个元素上会导致维护困难。它还防止您将HTML和JavaScript视为单独的层(数据层和行为层),就像CSS是您的表示层一样 监听事件是开发JavaScript的一种更成熟的方法。最初需要一点习惯,因为单从元素上看,当您单击它时,某些功能将被触发已经不再明显,但您很快就会找到解决方法,更好地组织和注释代码
编辑,因为我看到我没有将“this”转换为jquery对象,并且当您在回调中时,“this”是本机DOM对象,因此.val不起作用。除了Markandey的注释之外:如果您使用jquery,您可以使用属性选择器而不是类名,而无需太多麻烦,这样您就可以使用最少的代码 $input[name=v]。单击我的回调 在mycallback函数中,“this”将引用已单击的元素 e、 g 将onclick属性放在每个元素上会导致维护困难。它还防止您将HTML和JavaScript视为单独的层(数据层和行为层),就像CSS是您的表示层一样 监听事件是开发JavaScript的一种更成熟的方法。最初需要一点习惯,因为单从元素上看,当您单击它时,某些功能将被触发已经不再明显,但您很快就会找到解决方法,更好地组织和注释代码
编辑,因为我看到我没有将“this”转换为jquery对象,并且当您在回调中时,“this”是本机DOM对象,因此.val无法工作。您可以将jquery添加类用于每个收音机,例如RadioClass将jquery文件添加到页面并使用下面的代码
$(document).ready(function() {
$('.RadioClass').click(function () {
alert($(this).val());
});
});
您可以使用Jquery将类添加到每个收音机,例如RadioClass将Jquery文件添加到页面,并使用下面的代码
$(document).ready(function() {
$('.RadioClass').click(function () {
alert($(this).val());
});
});
这是一篇类似的文章,提供了一个很好的解决方案,即如何为所有这些功能提供一个“onclick”函数
下一段代码对您很有用:
document.onclick = myRadioButtonOnClickHandler;
function myRadioButtonOnClickHandler(e) {
var realTarget = e ? e.target : window.event.srcElement;
if (realTarget.nodeName.toLowerCase() === 'input' && realTarget.type === 'radio' ) {
doSomething();
}
}
希望对您有所帮助。
这是一篇类似的文章,提供了一个很好的解决方案,即如何为所有这些功能提供一个“onclick”函数
下一段代码对您很有用:
document.onclick = myRadioButtonOnClickHandler;
function myRadioButtonOnClickHandler(e) {
var realTarget = e ? e.target : window.event.srcElement;
if (realTarget.nodeName.toLowerCase() === 'input' && realTarget.type === 'radio' ) {
doSomething();
}
}
希望能有所帮助。问题是:最好的方法是什么?换句话说,只添加一个处理程序是否比注册尽可能多的onclick函数更好?在本例中,我唯一不同的做法是使用“更改”事件而不是“单击”@Lx1更好的方法取决于需要和口味。没有明确的答案,但在这种情况下,要处理一组单选按钮,一个处理程序肯定比许多好。@scunliffe:Mmh确实,在Firefox中不起作用@LX1:如果你有很多单选按钮,你必须添加尽可能多的事件侦听器,这会占用更多的内存。问题是:最好的方法是什么?换句话说,只添加一个处理程序比注册尽可能多的onclick函数好吗?在这个示例中,我唯一要做的不同之处是使用“change”事件而不是“click”@Lx1什么更好取决于需要和口味。没有明确的答案,但在这种情况下,要处理一组单选按钮,一个处理程序肯定比许多好。@scunliffe:Mmh确实,在Firefox中不起作用@LX1:如果你有很多单选按钮,你必须添加尽可能多的事件侦听器,这会占用更多的内存。也许你应该在这里提到你使用了jQuery。也许你应该在这里提到你使用了jQuery。我讨厌这个。不是每个人都使用JQuery。我讨厌这个。不是每个人都使用JQuery。