我正在尝试将输入方法添加到具有相同类的多个dom元素。当on input
函数嵌套在each
函数内时,它正在工作。当我尝试将它们分成两个独立的功能时,它无法工作。
这是工作版
$('.textField').each(function(index, element){
var currentField = $(this);
var currentFieldCheckboxId = "#" + currentField.attr('name')+"Checked1";
// Look for changes in the value
currentField.on('input', function(event){
// If value is NOT empty
if ($.trim(currentField.val()) != '' ) {
// if text fields are unchecked
if (!$(currentFieldCheckboxId).is(":checked")){
$(currentFieldCheckboxId).click();
}
} else {
// If text fields are empty
if ($(currentFieldCheckboxId).is(":checked")){
$(currentFieldCheckboxId).click();
}
}
});
});
不工作的版本。即使.textField
不为空,它也不会进入非空状态。
$('.textField').each(function(index, element){
var currentField = $(this);
var currentFieldCheckboxId = "#" + currentField.attr('name')+"Checked1";
// Look for changes in the value
currentField.on('input',qwer(currentFieldCheckboxId,currentField,event));
});
function qwer(currentFieldCheckboxId,currentField,event){
// If value is NOT empty
if ($.trim(currentField.val()) != '' ) {
console.log("not empty field " + currentField.val());
// if text fields are unchecked
if (!$(currentFieldCheckboxId).is(":checked")){
$(currentFieldCheckboxId).click();
}
} else {
console.log("Empty field " + currentField.val());
// If text fields are empty
if ($(currentFieldCheckboxId).is(":checked")){
$(currentFieldCheckboxId).click();
}
}
}
答案 0 :(得分:2)
您要做的是将函数(在您的情况下为函数对象,qwer
)传递给另一个函数(on
函数)。你实际做的是调用该函数(qwer
),并将结果传递给另一个函数(结果实际上是undefined
,因为你不从qwer
返回任何内容。)
qwer
< - 这是函数对象
qwer(currentFieldCheckboxId,currentField,event)
< - 这是被调用函数的结果
如果要将某些参数传递给qwer
,则需要创建另一个要调用的函数。
试试这个:
currentField.on('input', function(event) {
qwer(currentFieldCheckboxId, currentField, event);
});