【发布时间】:2016-02-26 05:21:37
【问题描述】:
我有一个脚本可以检测按钮点击,它会使用 jQuery 将 CSS 样式表附加到“头部”,如下所示:
const link = "<link class='listcss' rel='stylesheet' href='http://....list.css'>";
$("head").append(link);
那我需要根据css的宽高属性做一些计算:
function CSSDone(){
if($(window).width()>640){
$(".grid-item").css({"height":$(".grid-item").width()*0.2});
$(".grid_item_img").css({"height":$(".grid-item").width()*0.2});
console.log("a");
}else{
$(".grid-item").css({"height":$(".grid-item").width()*0.33});
$(".grid_item_img").css({"height":$(".grid-item").width()*0.33});
console.log("b");
}
}
CSSDone();
但是,如果我启动 CSSDone();添加样式表后,计算发生在加载 css 之前。 我疯狂地在网上搜索,但我尝试的一切都不起作用:
我尝试了以下选项:
-
不起作用:
link.onload = function () { CSSDone(); }
-
不起作用:
if (link.addEventListener) { link.addEventListener('load', function() { CSSDone(); }, false); } -
不起作用:
link.onreadystatechange = function() { var state = link.readyState; if (state === 'loaded' || state === 'complete') { link.onreadystatechange = null; CSSDone(); } }; -
不起作用:
$(window).load(function () { CSSDone(); }); -
不起作用:
$(window).bind("load", function() { CSSDone(); });
相信我。没有任何作用......
**一种解决方法:**
我在 DOM 中加载 css 并立即使用 jQuery 再次删除它。这样以后在头部添加链接时就足够快了。
【问题讨论】:
-
change css link and wait till new css is loaded 的可能重复项。投票结束作为欺骗,不是因为这是一个糟糕的问题,而是为了整合信息。
-
我宁愿投票结束另一个问题而不是这个问题。
标签: jquery css document-ready