在css文件中嵌入一个JQuery表达式?

时间:2009-11-17 07:49:13

标签: jquery css expression

正如问题所暗示的,我可以在css文件中添加一个JQuery脚本作为表达式吗?或类似的东西:

.parent{
    background-color: pink;
    position:relative;
    width: 100%;
}

.child{
    position: absolute;
    background: transparent url('./background.gif') no-repeat top right;
    /*height: 100%;*/
    height:  expression($(this).parent.height()+'px');
    width: 12px;

}

这个脚本的整个想法是解决IE6中的100%div高度。

3 个答案:

答案 0 :(得分:3)

你不能这样做。

您可以在页面加载时执行某种javascript ...(一种查找具有100%高度的元素并将其替换为父级高度的函数。)

答案 1 :(得分:0)

不在我试过的任何浏览器上;有CSS expressions可能适用于IE 6,但它们并不是非常快速(所以说链接)。我认为问题是当CSS加载时与初始化jQuery选择器时相比。因此,您必须编写一些关于DOM就绪代码的内容,以选择需要设置其高度的所有元素,然后进行设置。

答案 2 :(得分:0)

#element {
    height: expression((function(element) {
              var x = window.setInterval (function () {
                    if (document.readyState.search (/loaded|complete/) > -1) {
                      window.clearTimeout (x);
                      $(element).height($(element).parent.height())
                    }
                  }, 50);
            })(this));
}

让我解释一下:首先,表达不好。按照dlablin的链接阅读原因。你应该考虑其他方法。如果必须,上述代码段的工作方式如下:

  1. 只要读取CSS,就会首先评估表达式。这意味着,DOM尚未就绪,jQuery可能尚未加载。

  2. 将表达式设置为匿名函数,即时执行。

  3. 此函数将当前元素element传递给包含的代码。

  4. 我们设置一个间隔:如果DOM准备好,每50ms检查一次。如果是,请清除间隔并运行jQuery。

  5. 备注:如果您使用很多元素执行此操作,这会让您的网页速度变慢。再次强调这一点:不要在家里这样做,孩子们!