0

我需要使用 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 也替换 number
我想我需要类似的东西:

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

提示:

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

3 回答 3

4

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

.replace(/\d*MQ\.css/, "MQ.css");
.replace(/\d*MQ\.css/, "400MQ.css");
于 2013-06-14T08:43:07.257 回答
0

我会用

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

改变预期表达式的相同解决方案 (400, 800, '')

于 2013-06-14T08:46:42.387 回答
0
$('style:contains("MQ")').text(function () {
    return $(this).text().split('/')[0]+"/400MQ.css";
});
于 2013-06-14T08:44:58.580 回答