如果css类具有display:none,则jQuery Show不起作用
我有一个叫做加载的类,如下所示:如果css类具有display:none,则jQuery Show不起作用,jquery,html,css,Jquery,Html,Css,我有一个叫做加载的类,如下所示: .loading { display: none; vertical-align: top; margin: 0; padding: 0; background: url('../images/shared/loading_16x16.gif') center center no-repeat; width: 16px; height: 16px; } 使用以下html代码段: <div id="loa
.loading {
display: none;
vertical-align: top;
margin: 0;
padding: 0;
background: url('../images/shared/loading_16x16.gif') center center no-repeat;
width: 16px;
height: 16px;
}
使用以下html代码段:
<div id="loading" class="loading"></div>
但是show()
根本不起作用。即使我从chrome开发者窗口触发它。
在chrome developer窗口中,如果我取消选中loading类中的显示:none
,则会出现标记
发生了什么事?使用$(“#加载”).show()代码>而不是$(“#加载”).show().children().show()代码>
您可以在本地实例中尝试此操作,尽管它完成得非常快,所以您无法查看加载
为了验证这一点,您只需从代码中转储加载隐藏行,然后可以尝试,现在您可以找到加载文本
complete: function () {
// $("#loading").hide();
}
您的代码无法工作,因为您将类与ID混合在一起。
在css中有一个.loading
类,但在jQuery中使用id选择器$(“#loading”)
。jQuery根本找不到元素。请尝试以下操作:
$.ajaxSetup({
beforeSend:beforeSendFunction(),
complete:onCompleteFunction()
});
});
function beforeSendFunction(){
setTimeout(function(){
$("#loading").show();
},2000)
}
function onCompleteFunction(){
$("#loading").hide();
}
您可以在beforesend中删除setTimeout函数
这是正在工作的JSFIDLE链接,我将背景图像替换为背景颜色:“我刚刚想出来
我通过在jQuery上执行以下操作来修复它:
$.ajaxSetup({
beforeSend: function () {
$("#loading.loading").show();
},
complete: function () {
$("#loading.loading").hide();
}
});
希望对其他人有所帮助:)事实上,我自己也遇到过这个问题,有一个更简单的解决方案。只需删除该类
$('#loading').removeClass('loading');
请求是否发生得如此之快以至于您无法看到它?$(“#加载”).hide().children().hide()代码>是不必要的。可见性是继承的。您试过只运行breforeSend部分吗?我相信问题在于ajax调用几乎立即执行并完成。默认情况下,Show的延迟为300毫秒,因此如果您的ajax函数在50毫秒内执行,它将在元素可见之前隐藏。Javascript具有比css规则更高的优先级,因为它会内联应用规则。我猜测的是,该规则应用于不同的元素,并且您有一个选择器问题。试着手动运行它,看看它在哪里被应用。为什么不呢#加载是div的有效选择器。请查看HTML
<代码>加载
id和类选择器存在。元素是用#加载选择器创建的
$('#loading').removeClass('loading');