替换动态内容jQuery / javascript

时间:2013-06-14 08:38:34

标签: javascript jquery

我需要使用jQuery在字符串中进行动态替换。我已经阅读过有关在选择器中使用通配符的内容,但我希望它在字符串中。

考虑这个HTML:

<style type="text/css">@import url('css/another.css');</style>
<style type="text/css">@import url('css/stylesMQ.css');</style>

我在jQuery中有这个功能:

function adjustStyle(width) {
    width = parseInt(width);
    if (width < 701) {
        $('style:contains("MQ")').text(function () {
        return $(this).text().replace("MQ.css", "400MQ.css");
        });
    } else if ((width >= 701) && (width < 900)) {
        $('style:contains("MQ")').text(function () {
        return $(this).text().replace("MQ.css", "800MQ.css");
        });         
    } else {
       $('style:contains("MQ")').text(function () {
        return $(this).text().replace("MQ.css", "MQ.css");
        });         
    }
}

此函数是整个jQuery的一部分,它根据屏幕大小更改@imported css。


错误

它有效,但是当我开始玩屏幕尺寸时,我会得到类似的结果:

@import url('css/styles800800800800400400400400400400400400400400MQ.css');

我无法想象如何判断jQuery还要替换数字。我想我需要这样的东西:

.replace("styles*MQ.css", "styles400MQ.css");

提示:

  • 我没有使用媒体查询,因为我的客户是Fred Flinstone,他使用IE7并且不想要pollyfills,因为额外的加载时间因为认为他们是恶魔。
  • 页面中还有其他@imported CSS
  • 我不知道CSS和文件夹的整个路径,只知道名称(这就是我想要替换的原因而不是写新CSS的相对路径位置。)
  • 我可以更改任何这些CSS的名称。

3 个答案:

答案 0 :(得分:4)

而不是.replace("MQ.css", "MQ.css");尝试类似

的内容
.replace(/\d*MQ\.css/, "MQ.css");
.replace(/\d*MQ\.css/, "400MQ.css");

答案 1 :(得分:0)

$('style:contains("MQ")').text(function () {
    return $(this).text().split('/')[0]+"/400MQ.css";
});

答案 2 :(得分:0)

我会用

$('style:contains("MQ")').text(function (pos, value) {
        return value.replace(/styles(400|)MQ\.css/, "styles800MQ.css");
});

改变预期表达式的相同解决方案(400,800,&#39;&#39;)