0

我正在尝试使用数组并且遇到了一些困难。我知道这是基本的,但我还是 jquery/javascript 的新手,所以不知道为什么这不起作用

var vids = new Array();

vids[0] = $('#tab_content_1 iframe').attr('src');
vids[1] = $('#tab_content_2 iframe').attr('src');
vids[2] = $('#tab_content_3 iframe').attr('src');
vids[3] = $('#tab_content_4 iframe').attr('src');   

//alert(vids);

$.each(vids, function() {
    if( $(this).attr('src').search('?w=opaque')){
            $(this).attr('src').replace('$?=opaque', '?w=transparent');
            alert('hi');
        }
});

我正在尝试在 iframe 的 url 中搜索 opaque 参数并将其替换为 transparent 参数。

4

2 回答 2

3

您有几个问题,但最大的问题是您正在创建 iframe src值的数组,但随后尝试引用父框架。这是您需要的(注意许多简化):

$('#tab_content_1 iframe, #tab_content_2 iframe, #tab_content_3 iframe, #tab_content_4 iframe', function() {
    var frame = $(this),
        src = frame.attr('src');
    if (src.indexOf('?w=opaque') != -1)
    {
        frame.attr('src', src.split('?w=opaque').join('?w=transparent'));
        alert('hi');
    }
});

请注意,该search方法被滥用了,这replace与您使用它的方式不同。因此,更新后的代码用于indexOf检查字符串并split/join进行替换。

此外,我们在开始时直接使用 jQuery DOM 查询选择器,而不是单独的 iframe 数组(这是多余的)。

最后,注意使用attr(prop, value)来设置属性。

于 2013-02-20T17:44:47.723 回答
0

Isn't this would work:

$.each(vids, function () {
   if ($(this).attr('src').indexOf('?') > 0) {
      var str = $(this).attr('src').substr(0, $(this).attr('src').indexOf('?'));
      $(this).attr('src', str+'?w=transparent');
      alert($(this).attr('src'));
   }
});
于 2013-02-20T18:22:21.317 回答