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