我试图在我的网页上搜索没有将“当前”属性设置为“当前”的iframe。
(当使用iframe时设置当前属性,并在加载后重置)。
我正在尝试编码以便如果有1个或更多iframe未设置为当前,请使用其中之一,ELSE,创建新的iframe,执行其他操作并使用新的iframe,
但这段代码不太合适,我从不绊倒'警报',所以我永远不会进入ELSE部分,即使我知道我没有没有设置'当前'属性的iframe,:< / p>
var $fi = $visible.find(".file-info");
thisPreview = {};
var iframes = $('iframe').filter(function (index) {
return index == 0 || $('iframe').attr("current") == "no";
})
if(iframes.length >0){ //if one of the iframes hasnt got current set as current, use it
var theSuffix = iframes.attr('id').split('_').pop();
thisPreview[theSuffix] = $fi.prev(".image-preview");
$(this).closest(".file-upload-form").children(".variable-hidden").attr('value',theSuffix);
iframes.attr('current','current');
$(this).closest('.file-upload-form').attr('target','upload_target_'+theSuffix);
}
else{//else, create a new iframe, quick!
var count = $('[id^="upload_target_"]').length();
alert(count);
var countPlus1 = count+1;
iframe = $('<frame>').attr({'id':'upload_target_'+countPlus1,'name':'upload_target_'+countPlus1,'current':'current'}).addClass('upload-target');
iframe.appendTo($('#container'));
thisPreview[countPlus1] = $fi.prev(".image-preview");
$(this).closest(".file-upload-form").children(".variable-hidden").attr('value',countPlus1);
$(this).closest('.file-upload-form').attr('target','upload_target_'+countPlus1);
}
答案 0 :(得分:3)
index == 0
将为第一个iframe返回true
,无论其是否具有该属性。
此外,$('iframe').attr("current") == "no";
会选择所有 iframe。你想要当前的那个:
$(this).attr("current") == "no";
最后,不要构成自己的属性。使用data-
前缀:
<div data-stuff="foo"></div>
.data()
方法:
$('div').data('stuff') // "foo"
答案 1 :(得分:0)
您可以使用Attribute Not Equal Selector
var iframes = $('iframe[current != "current"]')
if (iframes.length > 0) {
// use old one
} else {
// create new one
}
JSFiddle进行测试。
答案 2 :(得分:0)
您确定此代码能够提供正确的结果吗?
return index == 0 || $('iframe').attr("current") == "no";
我对回归的使用感到困惑。它会返回“index == 0”的评估还是评估“index == 0”,如果它是false则评估“$('iframe')。attr(”current“)==”no“”?我认为你想要它做后者,但它看起来很模糊,它可能不会给你你期望的结果。