下記のように、複数の要素$('li')を取得してarray.map()を利用する場合、無意識に$(this)を使っていて、ふと怖くなり調べだしました。
alert($(this).text()); //this_1は"push"を返し、
alert($(this).text()); //this_2は順番に"1"、"2"、"3"を返してくれます。
これ自体は無意識に意図していた動作なのですが、はてthis_2は何故クリックされた$('button')要素のtext()を返さないのかという問題なのですが、恐らく$(this)のスコープの範囲の問題なのかと推察しております。array.map以外についても、一般的ばルールとしてこの$(this)の範囲がJquery上どのように定義されているのかを調べたかったのですが、見つけることができず、もし参照すべきリファレンス等ご存じの方がいらっしゃればお力添え頂けると幸いです。
宜しくお願い申し上げます。
html
1<ul> 2 <li>1</li> 3 <li>2</li> 4 <li>3</li> 5</ul> 6 7<button>push</button>
Javscript
1$('button').on('click',function(){ 2alert($(this).text()); //this_1 3 var get_li = $('li'); 4 get_li.map(function(){ 5 alert($(this).text()); //this_2 6 }) 7})
回答3件
あなたの回答
tips
プレビュー
2021/09/29 07:12
2021/09/29 07:40 編集
2021/09/29 07:35
2021/09/29 10:33