Eu tenho o seguinte código, que carrega div#b em div#a e posteriormente faz algo com div#b:
<html>
<head>
<script src="scripts/jquery.js"></script>
</head>
<body>
<script>
document.addEventListener('DOMContentLoaded', e => {
$('#a').load('test2.html', {},
// function() {
// console.log($('#b').attr('id')); // returns "b"
// $('#b').html('content in #b');
// console.log('completed');
// }
fillB()
);
});
function fillB(option=null) {
console.log($('#b').attr('id'));//returns undefined :(
$('#b').html('content in #b: '+option);
console.log('completed');
}
</script>
<div id="a">placeholder</div>
</body>
</html>
onde test2.html contém:
<div id="b"></div>
Meu objetivo é fazer com que a função de retorno de chamada (comentada) seja uma função nomeada fillB(), para que eu possa reutilizar o código em outro lugar. Porém, quando faço isso, o seletor $('#b')
é undefined
. Como posso fazer com que a função fillB() execute o seletor corretamente, quando for chamada?
Editar: também quero poder controlar quais parâmetros são passados fillB()
.
Você pode fazer isso em vez disso. É muito mais curto e faz o mesmo com menos lugares para errar
Eu também mudei o evento vanilla load para um jQuery
Aparentemente eu tenho que passar a função de retorno de chamada nomeada em uma função anônima: