将字符串添加到使用 jquery 动态生成的属性

Adding string to an attribute that is generated dynamically with jquery

我需要根据屏幕尺寸将字符串添加到动态生成的 href 的特定部分。这就是我得到的

 $(document).ready(function () {
             var strSC;
             $("[href*='sc=']").each(function () {
                 strSC = $(this).attr("href");
                 if ($(window).width() < 767) {
                     $(this).attr("href", strSC + "m");
                 } else if ($(window).width() <= 992) {
                     $(this).attr("href", strSC + "t");
                 } else {
                     $(this).attr("href", strSC + "c");
                 }
             });
         });

我想将 "m"、"t" 和 "c" 放在 asp 中动态生成的 "sc=" 查询字符串的末尾。因此,例如,如果 window 的宽度小于 767,我希望 href 更改为 href="www.mysite.com/index.asp?t=undefined&sc=1234567m&f=32

问题是我不知道 sc 到底等于什么。如果其中任何一个有意义

匹配 &sc= any number 的正则表达式应该可以工作

$(document).ready(function () {
    $("[href*='sc=']").attr('href', function(_, href) {
        var w    = $(window).width();
        var char = w < 767 ? 'm' : (w <= 992 ? 't' : 'c');

        return href.replace(/(\&sc\=\d+)/, ''+char)
    });
});

jQuery的attr直接接受回调,所以你不必使用each,反正它在内部迭代。

在回调中,第一个参数是索引,我们不需要它,常用的方法是使用 _,属性的当前值是第二个参数,在上面的函数中命名为 href(实际上可以命名为任何东西)。

然后我们得到window宽度,并在三元中使用它,这只是一个花哨的if/else。

最后我们使用一个正则表达式来查找字符串 &sc= 后跟任意数量的数字,我们捕获它并将其作为 </code> 传递给替换并添加我们从中获得的字符检查 window 宽度等,并将其 return 设置为 jQuery 的 <code>attr 并为每个元素设置