标识组(数组)中哪个输入触发的事件处理程序
Identifying which input triggered event handler from a group (array)
我有一组具有相同名称属性的复选框。。
<input type="checkbox" name="someDude" value="true" > Joe
<input type="checkbox" name="someDude" value="true" > Jack
<input type="checkbox" name="someDude" value="true" > Ralph
我通过jQuery将这些家伙作为一个数组,并为他们的onChange事件分配一个事件处理程序,比如…
var myJQuery = jQuery.noConflict(true);
var dudes = myJQuery('input[name=someDude]');
for (var i = 0; i < dudes.length; i++) {
dudes[i].onchange = function (e) {
alert("I am " + this.name);
}
}
在事件处理程序onChange函数中,是否有一种方法可以知道它们中的哪一个被单击了?由于他们的名字都一样,我不能简单地做我正在尝试的事情。即使我能得到索引,那也足够了。
如果我们能做到这一点而不添加任何HTML,那就太好了。
在事件处理程序onChange函数中,是否有一种方法可以知道它们中的哪一个被单击了?
是的,单击了this
。所以通常情况下,你不需要做一些事情,比如获取它的索引。不过,您可以使用index(element)
:
var index = dudes.index(this);
但是,你通常不需要。例如,这显示了点击元素后的文本节点的值:
var myJQuery = jQuery.noConflict(true);
var dudes = myJQuery('input[name=someDude]');
for (var i = 0; i < dudes.length; i++) {
dudes[i].onchange = function (e) {
alert("I am " + this.name + ", " + this.nextSibling.nodeValue);
};
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" name="someDude" value="true" > Joe
<input type="checkbox" name="someDude" value="true" > Jack
<input type="checkbox" name="someDude" value="true" > Ralph
(我实际上不建议获得下面节点的值,这只是一个例子,证明this
指的是实际点击的元素。我会将输入及其相关标签放在label
元素中,然后使用标签的.text()
。(
请注意,有一种更简单的方法可以将点击处理程序附加到这些元素,并且可以避免在循环中不必要地创建函数:
var myJQuery = jQuery.noConflict(true);
var dudes = myJQuery('input[name=someDude]');
dudes.on("change", function(e) {
alert("I am " + this.name);
});
this
仍然如前所示工作:它指的是与单击相关的实际元素。
this
将为您提供与之交互的对象。
你的问题是它们之间几乎没有什么区别。
明智的方法是做一些可以让你做到这一点的事情,即使JS失败了,数据作为常规表单提交发送到服务器。
给他们不同的价值观。
<input type="checkbox" name="someDude" value="Joe"> Joe
然后你可以检查:
this.value
$('input[name="someDude"]').on('click', function() {
alert("My index is: " + $(this).index());
}
看看index((方法。(
您可以使用一个立即调用的函数表达式来创建一个范围,这样每个事件处理程序都将有自己的索引变量:
for (var i = 0; i < dudes.length; i++) {
(function(i){
dudes[i].onchange = function (e) {
alert("I am number " + i);
}
})(i);
}
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 是否可以从输入处理程序中确定输入的类型
- AngularJs Cordova安卓应用程序中输入的4位密码PIN验证
- 使用jquery删除输入框上的外部处理程序/库
- 从可编辑的引导程序中获取输入值
- 替代输入:基于按钮点击事件的文本更改处理程序
- 如何使用角度事件处理程序引用输入元素的值
- 触发器<输入类型=“;文件“>用angular程序选择文件
- 通过程序从多个输入字段上传多个文件-blueimp jquery fileupload
- 使用xPath从Jquery数据验证程序获取输入
- 如何将多个参数传递给输入's onChange处理程序
- 如何要求用户输入一个介于 1 和 50 之间的整数,然后小程序打印出一行这个星数
- krajee引导程序文件输入上传
- onchange事件处理程序在输入时更改页面
- 如何在引导程序中将输入文本框嵌入到图像的顶部
- iOS cordova应用程序中的文本区域只接受一次输入
- 当通过javascript而不是按键/复制/粘贴更新文本输入时使用的事件处理程序
- Chrome应用程序在Webview中的按钮/输入上添加点击事件
- Angularjs-检查我是否输入并切换加载程序图标
- Handlebar.js模板,使用Undercore.js-Zendesk应用程序进行动态表单输入