2016-04-12 63 views
0

这个问题可能是重复或愚蠢的。我读过类似这样的问题,但不是确切的事情。有没有办法改变jquery类的属性?

假设我有两个动态生成的li的等级为.someclass.someclass2,并且两者都有不同的宽度,需要在页面加载时计算。

那么,有没有计算出的宽度设置为类一旦不是width 每次li设置生成的方法吗?

我们可以用css做到这一点,如果宽度已知,.someclass { width: 20px;} .someclass2 { width: 50px;}然后每当一个新的元素生成的css被应用到它们。还有每次

应用宽度是一个追加发生

$('#somediv').click(somefunction); 

function somefunction() { 
    $('#somediv').append('<li class="someclass"><li class="someclass2"></li></li>'); 

    $('.someclass').css('width', $(document).width() - 112); //every time 

    $('.someclass2').css('width', $(document).width() - 250); //every time 

} 

应用宽度一次 - 有没有办法做到这一点只有一次?

$('.someclass').css('width', $(document).width() - 112); //once, but it will not work 

$('.someclass2').css('width', $(document).width() - 250); //once, but it will not work 

$('#somediv').click(somefunction); 

function somefunction() { 

    $('#somediv').append('<li class="someclass"><li class="someclass2"></li></li>'); 

} 

如果有更多的元素,它会频繁发生,会有什么性能差异?

+0

在计算宽度/高度值(px,%,em)后,您就会缺少类型。 –

+1

你可以做的是给动态元素相同的公共类,并使用jqQuery的每个函数更新所有具有公共类的元素的宽度。使用这个你不必写多行。 –

+0

,或者你可以用'li'元素的'style'属性设置内联宽度。因此,有许多不同宽度的选项 –

回答

0

这里我们可以使用JS创建一个cssText,所以我们可以为每个css类设置自定义值。

然后创建一个style元素,并将其内容等于预定义cssText

var cssText = '.someClass {width:' + (window.innerWidth - 100) + 'px;} .someClass2 {width:' + (window.innerWidth - 200) + 'px; }', 
    head = document.head, 
    style = document.createElement('style'); 

if (style.styleSheet){ 
    style.styleSheet.cssText = cssText; 
} else { 
    style.appendChild(document.createTextNode(cssText)); 
} 

head.appendChild(style); 

现在,所有你需要做的是什么:

  • 运行上面的代码来创建所需的类
  • 随时致电代码,无需每次添加css款式
相关问题