JQueryでloadした別のファイルの要素を取得したいと思っています。
index.html
html
1 <div data-readfile="page02.html" class="readfile"></div> 2 <div data-readfile="page03.html" class="readfile"></div>
page02.html
html
1<div class="hoge">page02の内容です。</div>
page03.html
html
1<div class="hoge">page03の内容です。</div>
JavaScriptでは、index.htmlでpage02.htmlとpage03のhtmlをjQueryのloadで読み込んでいます。
javascript
1let loadingEl = new Array($('.readfile').length); 2 3const fuga = () => { 4 const elements = document.getElementsByClassName('hoge'); 5 console.log(elements); 6 [...elements].forEach(el => { 7 console.log(el) 8 }) 9} 10 11const inc = () => { 12 $('.readfile').each(function (e) { 13 const filename = $(this).data('readfile'); 14 const $this = $(this); 15 const p = () => new Promise((resolve) => { 16 $this.load(filename , function (data, status) { 17 if (status === 'success') { 18 $this[0].outerHTML = data; 19 return 20 } else { 21 console.log(status) 22 } 23 }) 24 return resolve() 25 }) 26 loadingEl[e] = p(); 27 }); 28 Promise.all(loadingEl).then(() => { 29 fuga() 30 }) 31} 32 33inc();
fugaの
javascript
1console.log(elements);
では
HTMLCollectionが表示され、
0: div.hoge
1: div.hoge
length: 2
となっているのですが、
ここを
javascript
1console.log(elements.length);
にすると「0」が表示されます。
その先のforEachにて、hogeの要素を取得しいろいろと処理をしたいと思っているのですが、
このようなことは可能でしょうか。
後から追加した要素を操作する事に関してはいろいろググると.onを使う方法が出てくるのですが、たとえば
javascript
1 $('body').on('click','.hoge',function(){ 2 $(this).css('color','red'); 3 })
とすると、文字が赤くなるのですが、clickではなくloadにすると処理が走りません。
jQueryのバージョンは3.5.1です。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/27 00:52