jquery - 在 for 循环中从 jQuery 编写 CSS

标签 jquery

我的脚本需要在页面部分动态创建样式表(而不是在每个元素上放置内联样式,因为稍后我需要使用媒体查询覆盖这些样式)。

代码

for (var i=0; i<theElements.length; i++){

    $(theElements[i]).not('.responsive-wrap').each(function(i, elem){
        var theWidth = $(this).width();
        var parentWidth = $(this).parent().width();

        $(this).addClass('element' + [i]);

        $("#dynamicStylesheet").text('.element' + [i] + ' {max-width: ' + theWidth + 'px;}');
    });
}

主要问题是:

这会完全覆盖 #dynamicStylesheet 每次循环运行中的文本(因此,当我加载页面时,.element22 只有一条规则)。如何让它添加文本而不覆盖?

奖励积分的子问题:

  • 这在大多数情况下都有效,但仅当 [i] 位于正方形中时有效 括号。这是为什么?

    我需要这里的for循环吗,或者本质上是.each(function(){}) 无论如何创建一个for循环?在 for 循环 内的这个函数下面还有另一个 each 函数,为了简洁起见,我没有发布该函数。

最佳答案

我不会在每次迭代期间添加文本。相反,构建一个字符串,然后将其添加到元素中。这也提高了性能。

您不需要 for 循环。

var cssString = '';
$(theElements).not('.responsive-wrap').each(function(i, elem){
    var theWidth = $(this).width();
    var parentWidth = $(this).parent().width();

    $(this).addClass('element' + [i]);

    cssString += '.element' + [i] + ' {max-width: ' + theWidth + 'px;}';
});

$("#dynamicStylesheet").text(cssString);

关于jquery - 在 for 循环中从 jQuery 编写 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553450/

相关文章:

javascript - Jquery - 将类添加到列表,同时从以前单击的列表中删除

jquery - 如何将拆分按钮 ListView 上的 jquery mobile 自定义为 3 个 anchor ?

jquery - 在动态创建的单选按钮中未正确应用样式

javascript - 动态裁剪图像 css javascript/jquery

php - 禁用日期选择器中的过去日期并仅选择 "monday"

javascript - 如何实时检测键盘输入并且不在 Javascript 上浪费太多 CPU 资源

javascript - Fullcalendar JS 突出显示有事件的日期,点击该日期将转到特定的 URL

javascript - 如何使 knockout-js 模板 css 媒体查询感知?

javascript - 使用正则表达式查找图像 url

javascript - 无法从 angular4 中的嵌套函数访问它