【问题标题】:`$("selector").is(":visible")` doesn't work within a modal (bootstrap modal)`$("selector").is(":visible")` 在模态(引导模态)中不起作用
【发布时间】:2016-03-15 16:32:17
【问题描述】:
我经常使用$("selector").is(":visible") 来检查元素的可见性。
但是,当使用模态(引导模态)中的元素时,这只会发生故障。
尽管我找到了一种使用$("selector").css("display") 作为临时工具的方法,但这仍然是一个值得解决的问题。
请查看此jsiddle page 以查看有关此问题的更多相关信息。
【问题讨论】:
标签:
jquery
twitter-bootstrap
modal-dialog
【解决方案1】:
发生这种情况是因为您在执行代码时尚未显示您的模式。有动画。这是证明这一点的修改后的代码。您可以使用模态事件来完成您想要的:
window.setTimeout(function() {
console.log(labelError.is(":visible"));
console.log(labelError.css("display"));
labelError.show();
console.log(labelError.css("display"));
console.log(labelError.is(":visible"));
},500);
在此处查看修改后的 jsfidle 页面:https://jsfiddle.net/pbjd2bz6/
【解决方案2】:
从 Bootstrap 3.0 开始,我们可以使用 on('shown.bs.modal', function (e) {
见 JsFiddle https://jsfiddle.net/jn111sum/4/
$( "#generator" ).on('shown.bs.modal', function (e) {
var labelError=$("#phrasesError");
$("#phrasesError").fadeOut();
console.log("this is where the useful infos begin");
console.log(labelError.is(":visible"));
console.log(labelError.css("display"));
labelError.show();
console.log(labelError.css("display"));
console.log(labelError.is(":visible"));
});
希望有帮助