用新的LESS文件刷新页面

时间:2018-11-19 21:54:19

标签: jquery less

我的页面上带有以下选择框:

except

这个在头上

SELECT p.*, 
       (select count(distinct value) from values where id in (p.left_id, p.right_id)) as "union",
       (select count(*)
        from (
          select v.value from values v where id = p.left_id
          intersect
          select v.value from values v where id = p.right_id
        ) t) as intersection,
       (select count(*)
        from (
          select v.value from values v where id = p.left_id
          except
          select v.value from values v where id = p.right_id
        ) t) as left_diff,
       (select count(*)
        from (
          select v.value from values v where id = p.right_id
          except
          select v.value from values v where id = p.left_id
        ) t) as right_diff
from pairs p

我的 <form> <select id="themelist"> <option value="style.less">Style 1</option> <option value="style-2.less">Style 2</option> </select> </form> 中也有以下内容:

<link rel="stylesheet/less" type="text/css" href="style.less" id="lesslink">
<script src="https://cdnjs.cloudflare.com/ajax/libs/less.js/3.7.1/less.min.js"></script>

当我从下拉菜单中选择样式2时,没有出现任何错误,但它不会切换页面的样式。我知道我正在使用该功能,通过警报,script.js是正确的值。

我在这里想念什么?

谢谢

编辑:经过进一步审查,似乎从样式转到样式2会执行一些小的CSS更改,这些更改是一致的,但是是随机的,而从样式2到样式则无济于事。现在,这完全使我感到困惑。也可以使用less.refresh()。另外,控制台中不会引发任何错误。

1 个答案:

答案 0 :(得分:0)

我在关于SO的另一个问题中找到了答案,但最终我以另一种方式进行搜索并找到了答案。

jQuery and LESS, stylesheet update only works once

有答案,the following

  

这是由于LESS的工作方式所致。它解析较少的文件,   然后将样式属性添加到DOM。实际上,这些似乎   遵循以下格式

<style type='text/css' id='less:<<NAME OF YOUR LESS FILE>>'>
   /*your parsed content*/
</style>
     

无法正确加载的原因是因为LESS正在解析   内容,找到现有样式块,而不添加它。   随后的样式块被添加到头部的末尾,所以我   获取样式的“最新”版本。

一旦我将功能更改为包括以下内容:

$('style[id^="less:"]').remove();

在重置href之前,它运行良好!

很明显,这个问题是不同的,但是这个问题的答案也恰好是这个问题的答案,因为LESS在head的末尾添加了自己的代码。和我在一起。