我有一个值表,需要获取行的复选框的值。发生的事情是: 如果我有一个包含4行数据的表并选择顶行,则会为具有相同类名的表中的每个相应行触发绑定事件。我只希望它触发一次并返回已更改的行复选框的值(需要选中和未选中的触发器)。任何帮助表示赞赏。
在http://jsfiddle.net/radi8/MgFuu/5/看到我的小提琴。
我正在使用以下课程(使用Rob W和Richard D的建议修复,谢谢你们!):
var RequiredField = {
init: function() {
// bind a control structure around the PSN selection table
var psn = $(".psnselect");
//for (var i = 0, ii = psn.length; i < ii; i++) {
// $(psn).change(RequiredField.psnSelect);
//}
psn.change(RequiredField.psnSelect);
},
psnSelect: function(event) {
var evtName = event.currentTarget.name;
var checked = event.currentTarget.checked;
var val = event.currentTarget.value;
alert('PSN Selection: ' + evtName);
}
};
RequiredField.init();
答案 0 :(得分:1)
删除for
循环。 jQuery自动将事件附加到与选择器匹配的所有元素。
psn
已经是jQuery对象,因此$
包装器也可以省略:
psn.change(RequiredField.psnSelect);
修正了演示:http://jsfiddle.net/MgFuu/6/
<小时/> 如果要选择jQuery集合的 n 元素,可以使用以下任一方法:
var n = 0; // The first element (index 0)
psn.eq(n); // = jQuery wrapped first element
psn.get(0); // = DOM element
psn[0]; // = psn.get(0) = DOM element
答案 1 :(得分:0)
无需使用for循环。
init: function() {
$(".psnselect").change(RequiredField.psnSelect);
},
该事件将自动绑定到与选择器匹配的所有元素