/ / Você pode confiar em um ID de elemento atribuído pelo jQuery? - jquery, iframe

Você pode confiar em um ID de elemento atribuído pelo jQuery? - jquery, iframe

Eu estou trabalhando em um site que tem alguns poortlyPensei no código HTML com muitos elementos sem ID ou classes. Estou limitado a manipular o HTML apenas com jQuery (ou javascript). O site tem um iFrame sem um identificador, mas eu preciso fazer um monte de coisas com esse iFrame e seu conteúdo, então eu uso o jQuery para atribuir um ID (chamado upload_frame) ao quadro da seguinte forma:

$("iFrame", window.parent.document).each(function() {
var src = $(this).attr("src");
var search = "upload.asp";
if( src && src.indexOf(search) != -1){
$(this).attr("id", "upload_frame");
}
});

(O jQuery é executado dentro de outroiframe, portanto, a parte window.parent.document quando eu visar qualquer elemento.) Agora, o problema que me deparo é que eu uso o ID atribuído acima em lugares diferentes ao longo do meu arquivo js, ​​e as vezes parece que partes do meu código simplesmente não sãoexecutado. Não há erros gerados. Isso pode acontecer porque esse código está sendo executado antes que o iframe tenha recebido o ID que eu uso no restante do meu código jQuery? Esta é uma questão de tempo?

Respostas:

2 para resposta № 1

Você poderia apenas fazer:

$("iframe[src*="upload.asp"]");

Não vejo sentido em adicionar o ID com jQuery. Ou use o seletor acima, ou se você optar por usar um loop, uma vez que você tenha encontrado o iframe correto, apenas faça referência a ele. Não dê a ele um ID para encontrá-lo novamente, isso é contra-intuitivo.

var $uploadIframe;
$("iFrame", window.parent.document).each(function() {
var src = $(this).attr("src");
var search = "upload.asp";
if( src && src.indexOf(search) != -1){
$uploadIframe = $(this);
}
});