javascript数组 - .each()循环 - 检测字符串和交换

时间:2013-02-20 17:39:58

标签: jquery arrays loops each

我正在尝试使用数组并遇到一些困难。我知道这是基本的,但我仍然是新的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参数交换出来。

2 个答案:

答案 0 :(得分: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)设置属性。

答案 1 :(得分:0)

这不会起作用:

$.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'));
   }
});