【发布时间】:2018-01-27 13:52:40
【问题描述】:
我正在学习 Jquery,我正在尝试检查 span 是否有某个类,这是有问题的 span:
<span class="recaptcha-checkbox goog-inline-block
recaptcha-checkbox-unchecked recaptcha-checkbox-checked
rc-anchor-checkbox recaptcha-checkbox-expired" role="checkbox"
aria-checked="false" id="recaptcha-anchor" tabindex="0"
dir="ltr" aria-labelledby="recaptcha-anchor-label">
<div class="recaptcha-checkbox-border" role="presentation" style=""></div>
<div class="recaptcha-checkbox-borderAnimation" role="presentation" style=""></div>
<div class="recaptcha-checkbox-spinner" role="presentation"></div><div class="recaptcha-checkbox-spinnerAnimation" role="presentation"></div>
<div class="recaptcha-checkbox-checkmark" role="presentation"></div>
</span>
这个想法是检查<span>是否有recaptcha-checkbox-checked类
“如果将类分配给一个元素,.hasClass() 方法将返回 true,即使其他类也是如此。”
所以我有以下内容:
captchaStatus: function () {
return $("#recaptcha-anchor").hasClass("recaptcha-checkbox-checked")
}
即使元素有类,它也总是返回 false。
编辑:
var AddressValidatorHelper = {
AddressValidator: function () {
if (!AddressValidatorHelper.changedAddress && AddressValidatorHelper.clickedVerify
&& AddressValidatorHelper.captchaStatus() && ValidatorControls.validate()) {
AddressValidatorHelper.noNormHide();
return true;
}
else {
if (!AddressValidatorHelper.alreadyAppended) {
AddressValidatorHelper.noNormAppend();
AddressValidatorHelper.noNormShow();
AddressValidatorHelper.alreadyAppended = true;
}
if (AddressValidatorHelper.changedAddress) {
AddressValidatorHelper.noNormShow();
}
if (AddressValidatorHelper.clickedVerify) {
AddressValidatorHelper.noNormHide();
}
return false;
}
},
noNormAppend: function () { $("#verDom").append("<label class='control-label' id='validarDom' style='color='#a94442'>Valide su domicilio</label>") },
noNormShow: function () { $("#validarDom").show() },
noNormHide: function () { $("#validarDom").hide() },
changedAddress: false,
clickedVerify: false,
alreadyAppended: false,
captchaStatus: function () {
return $("#recaptcha-anchor").hasClass("recaptcha-checkbox-checked")
}
}
所以我打电话给AddressValidatorHelper.captchaStatus()
【问题讨论】:
-
添加一个显示返回错误的工作示例
-
发布的代码按预期工作。请发布所有相关代码,以便我们提供更好的帮助。
-
div元素内不应包含span元素。他们注定要反其道而行之。 -
“即使元素有类,它总是返回 false。” 这是不可能的。要么它没有类,要么你没有按照你认为的那样运行 .hasClass。
-
我刚刚检查了我的一个使用recaptcha 的网站。在初始化之前,页面上不存在这些元素。如果您在使用后执行销毁逻辑进行清理,则会删除元素。所以在这一点上,我 99.99% 确定您只是遇到了时间问题。
标签: javascript jquery html