如何更改rss框中的每个网址?

时间:2015-09-23 19:55:42

标签: javascript jquery replace youtube

我有一个wordpress网站,可以在这里找到:
http://neocsatblog.mblx.hu/
在右侧,您可以看到此链接:
enter image description here
这个网址来自我的youtube rss chanel(上传播放列表),网址是:

  

https://www.youtube.com/feeds/videos.xml?channel_id=UCxnFBx6UhZS25Poa5-ZeeNg

我想修改此链接,因为我可以在灯箱中显示视频 例如,我想转到这个链接:

  

https://www.youtube.com/watch?t=2&v=yYNcwFIwCpU

到此:

  

http://www.youtube.com/embed/yYNcwFIwCpU?autoplay=1

所以我为它写了一个脚本:

jQuery(document).ready(function() {

        str = jQuery("#rss-4 ul li a").attr("href");
        jQuery("#rss-4 ul li a").each(function() {
        jQuery("#rss-4 ul li a").attr("href",str.replace(/(youtube.com)\/watch\?v\=|(youtu.be)\//g, "youtube.com/embed/"));
        jQuery( '#rss-4 ul li a' ).attr( 'href', function(index, value) {
        return value + '?autoplay=1';
        });
        //Lightview class need for the lightbox
        jQuery("#rss-4 ul li a").addClass("lightview");
         });
});

不幸的是,这个剧本不做正确的事 它做什么?
该脚本将所有链接url 替换为最新的视频网址(列表中的第一项)。
在这种情况下,将所有网址重新安排为

  

“Puzsérszáraranyértsemmnná”

链接网址。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您正在使用each循环遍历所有实例,但在each内,您要设置指向同一网址的所有链接。

此外,您在str中存储的值是第一个匹配选择器的href。

this中的

each是元素集合的实例,请尝试:

jQuery("#rss-4 ul li a").each(function() {
        var str = this.href;
        str = str.replace(/(youtube.com)\/watch\?v\=|(youtu.be)\//g, "youtube.com/embed/");
         str +='?autoplay=1';
         // only change the current element
        jQuery(this).attr("href", str);            
});

- 或使用attr(function)

jQuery("#rss-4 ul li a").attr('href',function(_, oldHref) {
        var str = oldHref.replace(/(youtube.com)\/watch\?v\=|(youtu.be)\//g, "youtube.com/embed/");
         str +='?autoplay=1';
         return str;           
});