jQuery
cheat sheet
それjQuery使わなくても標準のhtml/css/jsでできるよ、ってやつ
ちょっとした開発に、library開発に、わざわざjQueryに依存する必要がないかもよ
単純に、jQueryで書けるあれをhtml/cssでどう書くんだ?の参考にもなる
いや、そうでもないな
$(function(){...})
初期読み込み時に、HTMLが全て読み込まれた後にこのブロックを実行する
DOMを操作する処理などは、HTMLが存在してる前提で動かさないとエラーになりうるため。
DOM操作なしで、最初に実行したい系の処理か
具体例は思いつかないけど
以下と同じ
listに対する処理をどう書くか
idは使えないのでclassで見ることになる
以下の2パターンが考えられる
loopしてその回数分の定義をする
js const $container = $('.container');
$container.each(function(index) {
$container.eq(index).f(...);
})
「近い親」みたいにして定義する
js...
$(this).closet('.hoge-container').f(...);
...
twigとかなら
id="hoge-{{user.id}}"
みたいにしてもいい
$("#hoge-{{user.id}}").click(function ..)
clickしたblockの親を取得する
htmlli
div.parent
span.price
button.submit ←click
こういうliが複数個あるときに、
button.submitをクリックしたときにそのブロックのspan.priceの値がほしい
parentで走査するのキモいなー
今はspanとbuttonが兄弟だからいいけど、入れ子深くなったら動かなくなるからな
text/val/html
text()
引数をそのまま文字列として表示
<b>a</b>
という引数なら、 <b>a</b>
という文字列を表示
val()
value属性を設定できるものにしか使えない
inputタグとか
.value()
というmethodはない
html()
引数はdomとして表示
<b>a</b>
という引数なら、太い a
を表示
innerText()
innerHtml()
value
textContent
この辺の違い
ajQuery | JavaScript |
.html("○○") | .innerHTML = "○○" |
.text("○○") | .textContent = "○○" |
.val("○○") | .value = "○○" |
.html() | .innerHTML |
.text() | .textContent |
.val() | .value |
findの返り値
配列になったり、値だったりすのか?
data()
の挙動が謎なので代わりに attr()
を使う
mapとかしたときのelemとthisの違い
elem
this
$(this)
$(elem)
ts$.find('.hoge_list').map(function(elem){
elem.value ?
this.value ?
})
$()
は関数
どういう関数?
$(document)
$
の命名規則
jQuery Objectを格納している変数にはprefixに$をつける?
そうならばmapのときもか
.map(function($elem, index) {...})
みたいに書くの?
これちがうな

書くとすれば .map(function(e,i) { $elem = $(e)})
かな
chainできるやつとそうでないやつの差がわからん
遅延実行
delay()
.delay( duration [, queueName] )
delayはアニメーションに対してしか動かないらしい(要出典)
アニメーション系とそうでない系って明確な区別があるのか
#??domいじるか、css触るだけか、の差とか?
queue()
.queue( [queueName] )
なぜこれは動かない?
js$('#hoge').html('hoge').delay(3000).hide();
delayはアニメーションに対してしか動かないらしい(要出典)
#hoge
の中に 'hoge'
を3s間だけ表示したい
これでうごいた
js $('#hoge').html('hoge').delay(3000).queue(function() {
$(this).html('')
})
これも動く
js $(`#hogehoge`)
.text('hoge')
.stop(false, false)
.fadeIn()
.delay(1500)
.fadeOut();