情景:
我想触发函数checkDOMChange
(隐藏ul
标记为空
一旦input
被填充并且没有聚焦但是当前,该功能未被调用。这是一个fiddle。
function checkDOMChange() {
if ($("div[id$='DoIQualify_financials'] div").hasClass("field-invalid")) {
if ($('.borrower1Salary_errors li').length == 0) {
jQuery("ul.borrower1Salary_errors").hide();
}
if ($('.borrower2Salary_errors li').length == 0){
jQuery("ul.borrower2Salary_errors").hide();
}
}
答案 0 :(得分:0)
您需要在解析脚本时更改要定义的脚本,在运行时没有field-invalid
类,因为DOM为空(尚未加载HTML元素)。
为此,将函数分配给变量,如下所示。
checkDOMChange = function (){
if ($("div[id$='DoIQualify_financials'] div").hasClass("field-invalid")) {
if ($('.borrower1Salary_errors li').length == 0) {
jQuery("ul.borrower1Salary_errors").hide();
}
if ($('.borrower2Salary_errors li').length == 0) {
jQuery("ul.borrower2Salary_errors").hide();
}
}
}
这样,在DOM加载了所需元素之后调用该函数。有一个很好的解释here可以更详细地解释其中的差异。
您还可以选择将您的函数放入window.onload
事件中,该事件在执行脚本之前一直等到DOM已加载。
第三个选项是将您的脚本放在HTML的结束body
标记之前(浏览器自上而下读取HTML,以便在读取script
标记之前加载DOM。)< / p>
您还需要关闭第一个if
声明
答案 1 :(得分:0)
function checkDOMChange() {
if ($("div[id$='DoIQualify_financials'] div").hasClass("field-invalid")) {
if ($('.borrower1Salary_errors li').length == 0) {
jQuery("ul.borrower1Salary_errors").hide();
}
if ($('.borrower2Salary_errors li').length == 0) {
jQuery("ul.borrower2Salary_errors").hide();
}
}
}
$(document).ready(function () {
$(document).on('blur', '.inputbox', checkDOMChange);
}
这就是你想要的,我猜猜想