动态地将参数添加到嵌入式URL

时间:2012-02-24 01:09:10

标签: javascript jquery dynamic dynamic-data

我使用带有jAlbum的程序Lightflow来构建图库。我在视频库中嵌入了YouTube视频。该程序生成以下HTML(针对单个嵌入视频),如下所示:

<div class="item">
 <img class="content hidden" src="thumbs/video.jpg" alt="" />
    <div class="ref hidden">item27</div>
    <div class="caption"><h3></h3></div>
    <div class="comment hidden"></div>
    <div class="author hidden"></div>
    <div class="params hidden">lightwindow_width=640,lightwindow_height=360</div>
    <div class="info hidden"></div>
    <div class="embed hidden"><iframe width="640" height="360" 
src="http://www.youtube.com/embed/E-lTPK5sQAA?fs=1&feature=oembed" 
frameborder="0" allowfullscreen></iframe></div>
    <div class="thumbWidth hidden">350</div>
    <div class="thumbHeight hidden">231</div>
    <a id="item27" class="lightwindow hidden" title="" rel="gal[cat]" 
href="http://www.youtube.com/watch?v=E-lTPK5sQAA" ></a>
    </div>

我想在youtube嵌入代码中添加一些参数。参数为rel=0&modestbranding=1&iv_load_policy=3

我无法在图库中添加这些内容(或者至少我不知道如何)所以我需要在浏览器中加载页面后动态地将这些内容添加到YouTube src代码的末尾。

我该怎么做呢?请提供示例,因为Javascript可以让我循环。

编辑1

我尝试过这段代码:

var $j = jQuery.noConflict();
$j('iframe').attr('src', $j(this).attr('src') + 
  '&rel=0&modestbranding=1&iv_load_policy=3'));

当我在Dreamweaver中抛出语法错误时,Firebug说我是missing ; before statement我在代码中缺少什么?

编辑2

当我尝试上述代码时,src更改为undefined&rel=0&modestbranding=1&iv_load_policy=3

2 个答案:

答案 0 :(得分:0)

要附加选项,您可以执行以下操作:

$('iframe').each(function () {
    var src = $(this).attr('src');
    $(this).attr('src', src + '&showinfo=1&autohide=1');
});

要在一段html中批量替换选项,您可以执行此操作,假设要替换的所有网址都具有此格式http://www.youtube.com/embed/id?params

var addYTparams = function(html, params){
    return html.replace(/(youtube.com.+\?).+/, '$1'+params);
};
addYTparams($el.html(), 'rel=0&modestbranding=1&iv_load_policy=3');

答案 1 :(得分:0)

在看到an answer to this question之后,我能够理解这一点。这是解决方案:

var $j = jQuery.noConflict();
$j('iframe').prop('src', function(i, oldSrc) {
return oldSrc + (oldSrc.indexOf('?') ? 
'&rel=0&modestbranding=1&iv_load_policy=3' : 
'?rel=0&modestbranding=1&iv_load_policy=3');
})

注意:你必须使用jQuery 1.6+来支持工作。