这是我的代码:
<https://jsfiddle.net/ef5cojqd/2/>
当我试图运行它时,我会#收到此错误:
未捕获的TypeError:elements [i] .attr不是函数
为什么?
答案 0 :(得分:1)
使用
$(elements[i]).attr()
$.attr()
是jQuery方法。同样的修复适用于您的.on()
功能
$(elements[i]).on("ifChanged", handle_company_state($(elements[i]).attr('id')));
因为你在这里使用jQuery。
您可以少写。
var container = $('#data-table'),
elements = container.find('input'); // container is a jQuery object; thus, $.find() works as traversing method in the DOM. see http://api.jquery.com/find/
$(elements).on("ifChanged", function(){
handle_company_state($(this).attr('id'))); // use `this` as reference to changed element.
});
答案 1 :(得分:1)
使用getattribute方法代替.attr
和addEventListener代替.on
。并you might not need jquery。
function () {
var container = document.getElementById('data-table');
var elements = container.getElementsByTagName("input");
for (i = 0; i < elements.length; i++) {
elements[i].addEventListener("ifChanged", handle_company_state(elements[i].getAttribute('id')));
}
}
function handle_company_state(element_id) {
//....
}
答案 2 :(得分:1)
我认为你正在寻找类似的东西:
function () {
var elements = $("#data-table input");
for (i = 0; i < elements.length; i++) {
$(elements[i]).on("ifChanged", handle_company_state($(elements[i]).attr('id')));
}
}
function handle_company_state(element_id) {
//....
}