JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net (766レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
623
(5): デフォルトの名無しさん [sage] 2020/07/23(木) 23:16:41.69 ID:k24nyzXR(13/21) AAS
https://jsfiddle.net/m8q15376/

例えばこの2つのコードはイベントハンドラをつけてるところは違いますが
同じよう動作をします。thisが使えない?何の話でしょうかねw

$("#id1").on('click', 'a', function() {
 $(this).css("background", "red");
});

$("#id2 a").on('click', function() {
 $(this).css("background", "red");
});
626
(3): デフォルトの名無しさん [sage] 2020/07/23(木) 23:22:10.11 ID:QHkNbR5l(7/8) AAS
>>623
だからそれ明らかにイベントバブル使ってないじゃん。
それを>>622形式で書いた時にe.targetが無いとどうしようもないでしょ。
それを言ってるんだよ。
642
(4): デフォルトの名無しさん [sage] 2020/07/24(金) 01:22:11.42 ID:2LubhzPR(3/17) AAS
>>626
訂正、>>623でもバブルを利用しているようだ。

jQueryはこの形式だとDelegated event handlers として扱われ、
on時点でサブクエリして一致した子要素に付けるのではなく、
内部的にバブルしてきたイベントを使い、実行時にクエリして一致を確かめるようだ。(後半部は予想、実装依存)
https://api.jquery.com/on/

だから確かにバブルを利用してはいるが、これだともっさり遅くはなる。(とはいえGUIの場合は大抵問題にはならない)
jQueryは使ってないし今後も使う予定もないので仕様には詳しくなく、見た目で判断してしまった。
なるほど何だかんだで上手く出来てはいる。

が、まあ、いずれにしてもこれをDOMAPIだけで書くのも別段苦労しないし、
jQuery内部でe.targetを使っているだけで、e.targetが無ければjQuery自体が組めないだけでしかない。

>>640
イベントデリゲーションの方がかなりオレオレ用語だと思うが。
確かにMDNには書いてあるが、俺は今まで聞いたこともなかったし、そもそもそれを「デリゲーション(キリッ」とかいうのもどうかしてると思うが。
OOPで言う委譲に当たるから「デリゲーション」なんだろうが、それはOOPで言う「継承か委譲か」、という話とは全然違っていて、
単に親要素でしかなく、子要素とは何の関わりもない。(一応包含してはいるが)
だから無理やりOOP的な解釈をすれば「デリゲート」しかないのだろうけど、
それは、世の中の全てを無理矢理OOPで解釈するJava脳みたいな感覚を受け、
Java以外で普通にOOPを分かっている奴からしたら相当気持ち悪い使い方だし、実際に流行ってもないだろ。
これが気持ち悪いと思わないのは君がOOPを理解してないからだよ。
ただし俺はGUI自体がOOPにフィットしないと思っているから、GUIしかやらないのなら理解している必要はないとも思うけども。

そして君は都合の悪い>>633は無視なのか?
既に言ったが、現在の状況でe.targetが無くなることはない。
ただ、あの辺デタラメに拡張して仕様がグダグダなので、整理しろよな、とは思うが。
677: デフォルトの名無しさん [sage] 2020/07/24(金) 10:17:09.02 ID:fMjVnhWI(26/38) AAS
先に書いてやるか
jQueryでqueryすること(意味がよくわからんが)と言われれば
普通に思いつくのは、$('#id1"') とかなわけだが

>>623で「イベントデリゲーション」を使ったコードでも
このようにqueryしてますがなにか?

https://jsfiddle.net/m8q15376/
$("#id1").on('click', 'a', function() {
 $(this).css("background", "red");
});
681
(1): デフォルトの名無しさん [sage] 2020/07/24(金) 10:42:49.37 ID:2LubhzPR(12/17) AAS
>>676
> queryしているコードを書いてみろって
それはお前が>>622,623で既に書いてるだろ。
jQueryが美味しいのは、getElementByIdとか長たらしいこと書かずに$('#id')と書けるとか、
HTMLCollectionなのに単発のDOMみたいに扱えてforやforEach等のループを自前で書く必要がないとか、そういうところだろ。

そして俺が言ってるのは、親にeventhandlerを付けるのならその辺のおいしさが全くなくなる、ということだよ。

ただまあ、jQueryがそこまで好きならjQueryで一生書けばいいとも思うけど。
俺は必要ないから今後とも使わないだけであって。
691
(1): デフォルトの名無しさん [sage] 2020/07/24(金) 11:12:00.44 ID:fMjVnhWI(35/38) AAS
>>689
堂々巡りなのはお前が間違いを認めないからだろ

jQueryの話をなかったことにするな。

お前がレスするのを逃げてるのはこれだな

先に書いてやるか
jQueryでqueryすること(意味がよくわからんが)と言われれば
普通に思いつくのは、$('#id1"') とかなわけだが

>>623で「イベントデリゲーション」を使ったコードでも
このようにqueryしてますがなにか?

https://jsfiddle.net/m8q15376/
$("#id1").on('click', 'a', function() {
 $(this).css("background", "red");
});
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.051s