2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

JavaScript情報交換所(プログラミング既習者専用)

1 :デフォルトの名無しさん:2015/12/07(月) 07:26:33.87 ID:NYLGCW0V.net
実際にJavaScriptを書いている人の情報交換所です。
プログラミング既習者専用です。初心者の方はご遠慮下さい。
玄人の方、歓迎致します。

600 :デフォルトの名無しさん:2020/07/23(木) 07:32:15.26 ID:/b5pS+w+.net
>>596
> のこの$(this)が$("div")を指す理由はなんですか?

DOM APIとの互換性

例えば、これのイベントハンドラの中身を書き換えるならば
$("div").click(function(){
  $(this).css('background','red');
})

このようになる。(おまけで引数のjQuery eventを追加)
$("div").click(function(event){
  this.style.background = 'red';
})

このイベントハンドラ(function)はDOM APIと互換性があるので全く同じように使える。
(引数のeventはjQuery eventではなくDOM APIの eventだがある程度の互換性がある)
divElement.addEventListener('click', unction(event){
  this.style.background = 'red';
})

つまりイベントハンドラをDOM APIのものと互換性があるようにしているのが理由
そうすることで、コードを相互に変換しやすくなる。
例えば後からjQuery化するときなど少しずつ移植できる。

601 :デフォルトの名無しさん:2020/07/23(木) 07:36:27.79 ID:/b5pS+w+.net
>>599
thisは実行時に変わるからコードを見てもわからない
つまり呼び出されているコードを見てもわからない。
「誰が呼び出しているか?」を知る必要がある。

同じthisであっても「あれ」に登録して「あれ」から
呼び出されれば「それ」とは違うthisの場合がある。

だからthisが何かは仕様を調べるしかない
関数の引数にobjが入ってる場合、このobjの正体はなんですか?と
言ってるのと同じ質問だよ

602 :デフォルトの名無しさん:2020/07/23(木) 07:39:49 ID:/b5pS+w+.net
>596
Javaではthisを変えられることができないが
JavaScriptはthisは呼び出し側で与えるオブジェクト
JavaScriptだけではなくRubyやPerlなどいくつかの言語は呼び出し側でthisを変更できる

603 :デフォルトの名無しさん:2020/07/23(木) 08:18:34.22 ID:qAfVnVsp.net
>>600-602
ありがとうございます。
深いですね。
まだちゃんと理解できてないですが
ゆっくり吟味して考えてみます。

604 :デフォルトの名無しさん:2020/07/23(木) 08:20:56.24 ID:qAfVnVsp.net
this=eventとなっているということかな?

605 :デフォルトの名無しさん:2020/07/23(木) 08:24:35.38 ID:/b5pS+w+.net
>>604
違うぞ。eventはおまけ。thisの話とは直接関係ない

606 :デフォルトの名無しさん:2020/07/23(木) 08:25:10.27 ID:/b5pS+w+.net
ようするにjQueryはブラウザ標準のDOM APIと
互換性をもたせて作られているということ

607 :デフォルトの名無しさん:2020/07/23(木) 20:38:07.50 ID:QHkNbR5l.net
>>599
ID:/b5pS+w+ の言っていることは全面的に正しいが、補足すると、
> thisの正体を見分けるコツはないですか?
こんな事を言っている時点で糞サイト(或いはゴミ本)に騙されているから止めとけ。
見分ける必然性も意味もない。単なる暗黙の引数程度でしかなく、
実際にそれなりに組織的にコーディングするとcallはそれなりに使う。

DOM APIのthisがe.currentTargetを指すのはそもそもJava用の仕様、
つまりJavaでもクライアントスクリプトを書けるようにする為の仕様らしい。(とここ5chで聞いた)
しかし現在はJavaで書く奴なんて一人もいないし、JavaScriptにおいてはe.targetを全面的に使うのが正しい。
理由は、
1. thisにはe.currentTargetが入っているが、マトモなサイトなら通常はbubbleを利用する為、e.target主体で書くことになる。
 つまりこの仕様のthisでは使い物にならない。
2. e.currentTragetで役に立つ場合は、Elementに直接onXXXかaddEventListenerした場合だが、
 こんな事をやっているのはjQueryを使っている程度の簡単なサイトだけ。
 やれば分かるがbubbleを利用した方が実行効率もよく、コードも綺麗になるから、マトモなサイトは全部そうしてる。
 ただし、Elementに直接貼った方が直感的で分かりやすいので、jQueryのような簡単/初心者向けの場合には活用される。
 (なおjQueryでもbubble主体で書くことは可能ではあるが、それをやるとjQueryの意味がほぼ無くなるので普通はやってないと思う)

608 :デフォルトの名無しさん:2020/07/23(木) 20:39:00.72 ID:QHkNbR5l.net
3. それなりに組織的にコーディングすると、どうしてもイベントハンドラで共通の関数を使いたい要求が出てくる。
 しかしイベントハンドラだとthisがe.currentTargetによって潰されているので、共通関数をクロージャ(最終段はグローバル)で掴むしかないが、
 クロージャはクローズ(追加不能だしコード配置が限定される=C++で言うクラスはクローズ、namespaceはオープンと同じ意味のクローズ)ので、
 現実的には使いにくく、俺はイベントハンドラを集めたオブジェクト(その中に共通関数も入っている)をthisとしてcallし直して、
 イベントハンドラ内ではthis.my_sub_function()で共通関数を呼べるようにしている。
 この場合、thisは単なるオブジェクトなので、継承出来るのがいい。(共通関数の共通関数を__proto__側に追い出せる)
 どうせthisが使い物にならない仕様なので他の連中も同様にやっているとは思う。

なお俺はjQuery不要派だがjQuery自体は初心者には分かりやすく偉大だと思っている。
実際にjQueryを使っていて問題ないのなら使うこと自体も悪いことではない。
ただしそれは世の中のマトモなサイト≒ガチのプログラマーが本気で書いたサイトではほぼ使われていない手法だということも理解しておいた方がいい。
といっても今の君には分からないだろうが、イベントハンドラ内でthisをe.currentTargetとして利用することはガチのサイトではほぼ無い、ということ。
今はどうせ何も分かってない状態なんだろうから、それならイベントハンドラ内ではthisを使わずe.currentTargetを使う癖を付けた方が多分いい。
それ以前にbubbleを使うようにした方がいいが。

609 :デフォルトの名無しさん:2020/07/23(木) 20:41:48.09 ID:QHkNbR5l.net
といっても多分さっぱり何がなにやら、だと思うが、そういうものだと思っておいてくれ。
質問の質問を受けていたら話が進まないのでそれは断る。

610 :デフォルトの名無しさん:2020/07/23(木) 21:58:10.24 ID:k24nyzXR.net
>>607
>  (なおjQueryでもbubble主体で書くことは可能ではあるが、それをやるとjQueryの意味がほぼ無くなるので普通はやってないと思う)

イベントのキャプチャフェーズとバブリングフェーズの話をしてるなら
jQueryはバブリングフェーズしか対応してません
jQueryの意味がなくなる?なぜですか?

そもそもIE8以前がキャプチャフェーズに対応してないので
それ以前からあるjQueryでは実装が不可能です。
(jQuery 4.0では実装されるらしい)


間違ったことを書かないでください

611 :デフォルトの名無しさん:2020/07/23(木) 22:00:14.35 ID:k24nyzXR.net
>>608
> 現実的には使いにくく、俺はイベントハンドラを集めたオブジェクト(その中に共通関数も入っている)をthisとしてcallし直して、
> イベントハンドラ内ではthis.my_sub_function()で共通関数を呼べるようにしている。
> この場合、thisは単なるオブジェクトなので、継承出来るのがいい。(共通関数の共通関数を__proto__側に追い出せる)

やめましょう。無関係のイベントハンドラをまとめることは
単一責任の原則に違反しています。

612 :デフォルトの名無しさん:2020/07/23(木) 22:01:00.61 ID:k24nyzXR.net
>>608
> イベントハンドラ内でthisをe.currentTargetとして利用することはガチのサイトではほぼ無い、ということ。
いいえ。殆どがthisを使っています。e.currentTargetは冗長なだけです。

613 :デフォルトの名無しさん:2020/07/23(木) 22:41:43.25 ID:k24nyzXR.net
>>607
> DOM APIのthisがe.currentTargetを指すのはそもそもJava用の仕様、
> つまりJavaでもクライアントスクリプトを書けるようにする為の仕様らしい。(とここ5chで聞いた)

逆です。Javaではe.currentTargetを使い、thisは使えません。
(当時の)Javaでは言語仕様上の制限でイベントハンドラとして関数を使用することはできません。
イベントハンドラはオブジェクトである必要があります。

イベントハンドラ自体がオブジェクトであるため、thisはイベントハンドラオブジェクトになります。
そのためJavaでthisは使えません。

また昔のIEはaddEventListnerがなくattachEventを使いますが。
attachEventの場合thisはwindowでありe.currentTargetではありません。
つまり初期のIEのDOM APIはもちろんJavaでも使えますが
event.srcElement(e.currentTarget相当)しか実装されてないということです。
thisがe.currentTargetなのはJavaScriptのために作られた仕様です。

614 :デフォルトの名無しさん:2020/07/23(木) 22:44:12.81 ID:k24nyzXR.net
>>607
> JavaScriptにおいてはe.targetを全面的に使うのが正しい。
いいえ。e.targetは廃止されてます。
https://developer.mozilla.org/ja/docs/Web/API/Event/target

わざと正反対のことを書いてるんですかね?

615 :デフォルトの名無しさん:2020/07/23(木) 22:47:04.66 ID:QHkNbR5l.net
>>610
キャプチャフェーズの話はしてない。
なお俺の判断では、キャプチャフェーズは余程のパッチ当て以外では使うべきではない。
あれは使わないでも十分組めるし、そもそもキャプチャフェーズを使わなければならないシチュエーションがまるでない。
だから俺は何であの仕様が入れられたのか不明なのだが、君はそれが分かるか?
具体的に、キャプチャフェーズのユースケースを知りたい。

> jQueryの意味がなくなる?なぜですか?
jQueryは基本的に
queryしたElementに何か(この場合はイベント追加)するのを宣言スタイルで短く分かりやすく書けるのが売りだろ。
バブル主体で書くとそもそもqueryしないから、jQueryを使う意味がないんだよ。
それはやれば分かる。分からないのはやってないからでしかない。

> やめましょう。無関係のイベントハンドラをまとめることは
> 単一責任の原則に違反しています。
無関係ではないんだよ。
そしてその考え方がJava的オブジェクト指向の限界であり、JavaでGUIを誰もやらない理由だよ。
いずれにしても、JavaのGUIなんてキングオブゴミだし、GUIに関してはJava的オブジェクト指向は一旦捨てた方がいい。
実際、.NETにしても、データはバインディングでグローバルストア方式になってるだろ。
(末端のオブジェクトにデータを持たせている風に見せているが、
現実問題としてそれだと状態のセーブが出来なくて(やりにくくて)いきなり詰むから、実際はバインディングでゴニョゴニョ出来るようにしている)
だからJava的な、末端のオブジェクトにデータもイベント関数も全部持たせる、というのがGUIに絶望的に向いてないんだよ。
だからJavaではろくなGUIが作れない、というよりは無駄に苦労するので誰もやらない。その結果が今だ。

> いいえ。殆どがthisを使っています。e.currentTargetは冗長なだけです。
それは君がbubbleを使ってないから。jQueryもだがフレームワーク等は仕様はDOMAPIに合わせているだろうけど、
実際にbubbleの場合はe.currentTargetなんて使い物にならないから当然thisも使わない。
これもやれば分かるだけのこと。君はやってないだけ。

616 :デフォルトの名無しさん:2020/07/23(木) 22:49:01.44 ID:k24nyzXR.net
>>615
> バブル主体で書くとそもそもqueryしないから

そういう意味ですか?
意味不明なので他のわかりやすいサイトを
探し出してください

617 :デフォルトの名無しさん:2020/07/23(木) 22:49:21.91 ID:k24nyzXR.net
×そういう意味ですか?
○どういう意味ですか?

618 :デフォルトの名無しさん:2020/07/23(木) 22:50:10.57 ID:k24nyzXR.net
>それは君がbubbleを使ってないから。

bubbleを使うとやらのコードを書いてください

619 :デフォルトの名無しさん:2020/07/23(木) 22:53:40.02 ID:k24nyzXR.net
Description: The current DOM element within the event 「bubbling」 phase.
https://api.jquery.com/event.currentTarget/

620 :デフォルトの名無しさん:2020/07/23(木) 22:53:41.19 ID:QHkNbR5l.net
>>613
いや俺はthisがオブジェクトそのものだと聞いたが、
まあJavaの仕様については俺は詳しくないし、いずれにしてもスレチだし、この話は止めよう。

>>614
それは初耳だが、
LS見た限り当然載っているから移動されただけではないか?
そのページのLSの所押すと割と丁度いい場所に飛ぶから見てみればいい。

やれば分かるが、バブルで組んだ場合にe.target無しでは組めない。
廃止されるにしても、名前が変わって何かが定義されるとかであって、丸々捨てられることはないよ。
そしてbubbleを使わずに一々全Elementにイベントを付けていくのは完全に旧式であって、
マトモなサイトでは誰もそんなことやってない。
それも確認してみればいい。

621 :デフォルトの名無しさん:2020/07/23(木) 22:54:31.55 ID:k24nyzXR.net
jQuery event.currentTarget
日本語訳 説明:イベントバブリングフェーズ内の現在のDOM要素。

622 :デフォルトの名無しさん:2020/07/23(木) 22:55:20.17 ID:k24nyzXR.net
>>620
だからjQueryはバブルしかサポートしてないし、
jQueryのevent.currentTargetは(DOM APIと同じで)
イベントバブリングフェーズ内の現在のDOM要素。

623 :デフォルトの名無しさん:2020/07/23(木) 22:57:37.04 ID:k24nyzXR.net
>>620
> そしてbubbleを使わずに一々全Elementにイベントを付けていくのは完全に旧式であって、

jQueryでは全Elementにイベントハンドラを使えずに、
ocumentエレメントにイベントハンドラを付ける場合このように書きます。

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

知ってましたか?w

624 :デフォルトの名無しさん:2020/07/23(木) 23:16:41.69 ID:k24nyzXR.net
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");
});

625 :デフォルトの名無しさん:2020/07/23(木) 23:18:15.34 ID:QHkNbR5l.net
>>622
君と話が通じないのは君がbubble主体で組んだことがないからだよ。
ただし、bubbleの重要性に触れた『初心者向け』サイトは皆無で、俺が知ってるのはuhyohyoだけ。
気になるならそこでも読むんだね。
或いはそこら辺のまともなサイト、ガチの商用サイトだとbubbleを使ってない方が珍しい(と思いたい)から、見てみるとか。
ただし日本のサイトは割とまじで糞で、20年前と同じですねー、ってのも普通にあるからそういうところは駄目だが。
(ここ5chもそうだし)

ちなみに2度目だが、フェースの話はしてない。
イベントがバブルするのを「イベントバブル」と言うんだよ。
これはWPF等でも使われているからJavaScriptのローカル用語ではなくてプログラミング用語だ。
(といっても俺が知っている限りイベントバブルを最初に実装したフレームワークはHTMLで、
それらをWPF等も採り入れたから当然同じ用語になっているだけだが)
そしてそれをbubbleと(短く短くとうるさいお前ら用に)略して言っているだけ。
もう一度言うが、フェーズの話はしてないし、そもそも既に書いたように俺はキャプチャフェーズの存在価値が分からない。
今のところの見方では、あれは不要な仕様だと思う。
jQueryでも対応してないのなら、実際それで困ることはないからだろ。


>>623
知ってる。そしてそれだとjQueryを使う意味が無い=生のDOMAPIでも同様に書けるだろ
だからみんなjQueryを捨て始めてるだけ。
勿論君のようにjQueryが無いと死んじゃう人がそれに抗っているのも知ってる。

626 :デフォルトの名無しさん:2020/07/23(木) 23:21:08.33 ID:k24nyzXR.net
もうわかりましたね? ID:QHkNbR5l はイベントデリゲーションのことを
バブルなんて言ってるわけです(笑)

https://developer.mozilla.org/ja/docs/Web/API/Event/target
> event.target プロパティは、イベントデリゲーションを実装するために使用できます。

所詮オレオレ用語を使うレベルなんですよ

627 :デフォルトの名無しさん:2020/07/23(木) 23:22:10.11 ID:QHkNbR5l.net
>>624
だからそれ明らかにイベントバブル使ってないじゃん。
それを>>623形式で書いた時にe.targetが無いとどうしようもないでしょ。
それを言ってるんだよ。

628 :デフォルトの名無しさん:2020/07/23(木) 23:22:48.51 ID:k24nyzXR.net
>>625
> 知ってる。そしてそれだとjQueryを使う意味が無い=生のDOMAPIでも同様に書けるだろ

では生のDOM APIを使ってe.targetなしで書いてみてください。
できますか? jQueryはe.targetなしで書きました。

629 :デフォルトの名無しさん:2020/07/23(木) 23:23:26.39 ID:k24nyzXR.net
>>627
> だからそれ明らかにイベントバブル使ってないじゃん。]

最初に言ったよね?イベントバブル使うコードかけって
なんでお前かけないの?

630 :デフォルトの名無しさん:2020/07/23(木) 23:24:31.81 ID:k24nyzXR.net
>>627
1. jQueryのコードはイベントバブルしか使わない(使えない)
2. >>623のコードはe.targetを使ってない

ここまではいいですかねぇ(呆れ)

631 :デフォルトの名無しさん:2020/07/23(木) 23:28:46.58 ID:QHkNbR5l.net
>>626
まあ君との話はもうする価値がないから終わりにするけど、
イベントバブルはオレオレ用語ではないと思うよ。
イベントデリゲーションってのは確かにそこにあるが、初めて聞いたが。

e.targetについては、
> 複数の要素に同じイベントハンドラを割り当てて、どれかでイベントがあったときに何かさせたいような場合、e.target はとてつもなく有用なものです。
> 複数の要素に同じイベントハンドラーを割り当てて、どれかでイベントがあったときに何かさせたいような場合、e.target はとてつもなく有用なものです。
と、重要だからか?まじで2回書いてあるし、それが廃止とか使用禁止とかにはならないよ。
https://developer.mozilla.org/ja/docs/Learn/JavaScript/Building_blocks/Events

632 :デフォルトの名無しさん:2020/07/23(木) 23:28:53.91 ID:k24nyzXR.net
> イベントバブルを最初に実装したフレームワークはHTMLで、

笑うしかないわw HTMLがフレームワークとかw

633 :デフォルトの名無しさん:2020/07/23(木) 23:29:21.73 ID:k24nyzXR.net
> イベントデリゲーションってのは確かにそこにあるが、初めて聞いたが。

はい、初めて聞くレベル

634 :デフォルトの名無しさん:2020/07/23(木) 23:29:24.10 ID:HWiYfbuZ.net
>>614
そのMDNの廃止されたって言うのは以前の仕様書が廃止って意味じゃないの?

635 :デフォルトの名無しさん:2020/07/23(木) 23:30:10.44 ID:k24nyzXR.net
> e.targetについては、
> 複数の要素に同じイベントハンドラを割り当てて、どれかでイベントがあったときに何かさせたいような場合、e.target はとてつもなく有用なものです。

↓このコードが複数の要素に同じイベントハンドラを割り当てて、どれかでイベントがあったときに何かさせているコード

https://jsfiddle.net/m8q15376/

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

636 :デフォルトの名無しさん:2020/07/23(木) 23:56:14.14 ID:k24nyzXR.net
まとめ

こいつはイベントデリゲーション(複数の要素に同じイベントハンドラを割り当てるコード)を
jQueryで書いているコードを見たことがない、もしくは見たことあっても気づかないで
jQueryでもDOM APIと同じように書くしかないはずだ!だからjQueryを使う意味がない!と考えていたようだが
そのイベントデリゲーションこそjQueryでシンプルに書けるコードの一つだったという話です。

637 :デフォルトの名無しさん:2020/07/24(金) 00:01:31.32 ID:2LubhzPR.net
>>633
というかね、「イベントバブル」をオレオレ用語だと噛みついてくる時点でお前はどうかしてる。
JavaScript使ってて今まで聞いたことがないってのは本当に酷い。

MDNにも「イベントのバブリング」とは書いてある。
> https://developer.mozilla.org/ja/docs/Web/Guide/Events/Creating_and_triggering_events
uhyohyoでも「イベントバブリング」って言ってる。
> https://uhyohyo.net/javascript/3_3.html
-ing形だから通じないって事も無いだろうし、そもそもbubbleフェーズを表すと勘違いしても大体通じる内容でしかない。
そこで噛みついてくる意味が分からん。

JavaScriptが世のGUIを席巻しつつあるのは、イベントバブルの功績が大きい。
これがあるのと無いのとでは、GUIの組みやすさの次元が違うんだよ。
だから.NETもWPFで、GTKでもGTK+3から採用されてる。(Qtは知らん)

それを全く使わずにJavaScriptのGUIを語るのは完全に間違ってる。
そこら辺がjQueryしか出来ない人(つまり君とか)の問題だと思うよ。
jQueryしか出来ない人が馬鹿にされているのは君も知っているだろ?そういうことだよ。

638 :デフォルトの名無しさん:2020/07/24(金) 00:22:53.71 ID:fMjVnhWI.net
お前のオレオレ用語っていうのは「バブル主体」だアホめ
なんだよバブル主体って(笑)

639 :デフォルトの名無しさん:2020/07/24(金) 00:24:19.77 ID:fMjVnhWI.net
>>637
> JavaScriptが世のGUIを席巻しつつあるのは、イベントバブルの功績が大きい。

だから、イベントバブルじゃなくてイベントデリゲーションな(笑)
何がオレオレ用語なのかわかってない。
用語の使い方を間違ってんだよお前は。

jQueryはイベントバブルを使ってる

640 :デフォルトの名無しさん:2020/07/24(金) 00:25:21.34 ID:fMjVnhWI.net
何度も言うがjQueryを使うということは
イベントバブルを使ってるということだ

641 :デフォルトの名無しさん:2020/07/24(金) 00:28:52.61 ID:fMjVnhWI.net
ちなみにイベントデリゲーションという用語は
MDNでも使われているが、jQueryが最初に使った用語なんじゃないかと思ってる。

もともとはjQueryでイベントデリゲーションを使う時
delegateというメソッドを使っていたから。それが廃止になりonに統一された。

onに統一された結果、jQueryでイベントデレゲーションを使ったコードと
使ってないコードの差異が減って、e.targetを使わずにthisでコードが書けるようになった。

jQueryでイベントデレゲーションを使うのは、DOM APIを使うよりも
格段にシンプルに書けるようになっている
無関係のイベントハンドラを統合するという単一責任の原則に反するコードを書くことなく
イベントデレゲーションを使うことが可能になっている。

642 :デフォルトの名無しさん:2020/07/24(金) 00:33:37.06 ID:2LubhzPR.net
>>638-640
半島に帰れ

643 :デフォルトの名無しさん:2020/07/24(金) 01:22:11.42 ID:2LubhzPR.net
>>627
訂正、>>624でもバブルを利用しているようだ。

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

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

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


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

そして君は都合の悪い>>634は無視なのか?
既に言ったが、現在の状況でe.targetが無くなることはない。
ただ、あの辺デタラメに拡張して仕様がグダグダなので、整理しろよな、とは思うが。

644 :デフォルトの名無しさん:2020/07/24(金) 01:48:12.97 ID:2LubhzPR.net
ちなみにgoogle、

イベントバブル 約 22,500,000 件 (0.43 秒)
イベントデリゲーション 約 23,600 件 (0.28 秒)

645 :デフォルトの名無しさん:2020/07/24(金) 06:57:14 ID:9v9Epd9J.net
バブリングフェーズとイベントデリゲーションはバスタブとミカンくらい意味が違うがおんなじもんだと思ってたわけ?w

バブリングフェーズはイベント伝搬のステージのことで、
div
a
a
という構造ならhtmlからdiv→aと伝搬してくるのがキャプチヤリングフェーズ。
その後a→divとhtmlまで戻っていくのがバブリングフェーズ。

イベントデリゲーションは2つのaにイベントパンドラ設定するよりdiv1つに設定してaのイベントまとめてハンドルしてもらいましょうというやり方。

a(子)のイベントハンドリングをdiv(親または祖先)に委譲(delegate)するからイベントデリゲーション。

ちんちんとマンチェスターユナイテッドくらい意味が違うけどおんなじもんだと思ってたわけ?w

646 :デフォルトの名無しさん:2020/07/24(金) 07:07:22.97 ID:fMjVnhWI.net
>>643
イベントバブルっていうのはイベントがバブルのように上に上がっていくってだけで
一つのイベントハンドラで処理を行うって意味じゃねーんだよw
あーほ

647 :デフォルトの名無しさん:2020/07/24(金) 07:07:57.79 ID:fMjVnhWI.net
>>643
> だから確かにバブルを利用してはいるが、これだともっさり遅くはなる。(とはいえGUIの場合は大抵問題にはならない)
遅くなるの理由が何もないwww

648 :デフォルトの名無しさん:2020/07/24(金) 07:09:14.13 ID:fMjVnhWI.net
>>643
> 確かにMDNには書いてあるが、俺は今まで聞いたこともなかったし、

それがすべて。お前が無知なだけ

649 :デフォルトの名無しさん:2020/07/24(金) 07:10:55.78 ID:fMjVnhWI.net
結局の所 >>636 の まとめで書いたとおり

こいつはイベントデリゲーション(複数の要素に同じイベントハンドラを割り当てるコード)を
jQueryで書いているコードを見たことがない、もしくは見たことあっても気づかないで
jQueryでもDOM APIと同じように書くしかないはずだ!だからjQueryを使う意味がない!と考えていたようだが
そのイベントデリゲーションこそjQueryでシンプルに書けるコードの一つだったという話です。


そのイベントデリゲーションこそjQueryでシンプルに書けるコードの一つだったという話です。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

650 :デフォルトの名無しさん:2020/07/24(金) 07:27:42.03 ID:fMjVnhWI.net
>>643
> が、まあ、いずれにしてもこれをDOMAPIだけで書くのも別段苦労しないし、

だから最初に書けと言ってる。なんで書かないのか?

651 :デフォルトの名無しさん:2020/07/24(金) 08:10:38.59 ID:2LubhzPR.net
>>645
お前が日本語が出来なくていろいろ勘違いしてるだけだろ。

まず示したように、「イベントデリゲーション」なんて言葉は誰も使ってないから止めとけ。
イベントバブルの説明に必ず出てくる言葉なら、使用頻度=ヒットページ数も1:1になるはずであって、
約1000:1ってのは誰も使ってないって事でしかない。

> バブリングフェーズとイベントデリゲーションはバスタブとミカンくらい意味が違うがおんなじもんだと思ってたわけ?w
俺は同じ物だとは一言も言ってない。それを勝手に誤解しているのはお前の日本語が韓国人レベルだからだ。
ただ、これらは表裏一体であって、イベントがバブルしなければ纏めるも何もないので、
お前が思っているほど区別する意味もない。
お前みたいな文系馬鹿はやたら細かく区別して意味無くドヤる傾向があるが、プログラミングってのはそもそもそういうものではない。

実際問題として、イベントバブルを説明する際に、
確かに「バブルしてくるイベントを親で捕らえて纏めて処理する」事を示す名詞が欲しい、というのはあるだろう。
ただ、誰もそこで「イベントデリゲーション」なんて言葉を使ってないから1000:1の使用頻度になってる。
実際は、「バブルしてくるイベントを親で捕らえて」とそのまま言っているのだと思う。
ただそもそもバブルさせる=親で捕らえて纏めて処理する大前提だから、それ含めてイベントバブルでも大して問題ないんだよ。

652 :デフォルトの名無しさん:2020/07/24(金) 08:10:58.84 ID:2LubhzPR.net
同様にお前が無駄に拘っているのが以下だが、
> > イベントバブルを最初に実装したフレームワークはHTMLで、
> 笑うしかないわw HTMLがフレームワークとかw (>>632)
HTML/CSS/JavaScriptはほぼ常にセットで使われていて、どれだと区別する意味はないし、
確かに厳密にはどれでもないからWebAPIとか別括りにされてるが、そこに拘る意味もない。
俺は「イベントバブルを最初に実装した『フレームワークが』がHTMLだと言った。
お前的には「プラットフォーム」か、または別用語が適切なのかもしれんが、
いずれにしても言葉というのはコミュニケーションの手段であって、つまり通じるかどうかが最重要であって、
明らかに通じているのに揚げ足取りしているつもり?でドヤって来るのも頭おかしいとしか思えないが。
(オレオレ用語を使うなってのは「通じないから使うな」ということであって、オレオレ用語を使うこと自体が悪いというわけではない)

お前いつものjQuery厨か?
ならお前はここ2〜3年、まるで成長してないな。


>>650
むしろお前がそれを書けないと言っているに近いが、それをお前は認めるか?
日本語が通じない馬鹿なお前の為に敢えて言い直すと、
お前が「僕は書けませんから書いてみてください」と言うのなら書くが、
あまりに簡単すぎてお前の馬鹿さが際だつだけだぞ。


いずれにしても、脱jQueryなんてのが出てくるのはjQueryを使う意味がなくなりつつあるからであって、
お前がそれを気に入らなくても、それは事実として認めるしかないし、
実際にjQueryから輸入された仕様もあるのだからjQuery自体が糞だったわけでもないんだよ。
ただ、役割を終えつつある、というだけの話であってさ。

653 :デフォルトの名無しさん:2020/07/24(金) 08:42:13.69 ID:9v9Epd9J.net
バブリングフェーズとイベントデリゲーションはバスタブとミカンくらい意味が違うがおんなじもんだと思ってたわけ?w

654 :デフォルトの名無しさん:2020/07/24(金) 08:55:46.07 ID:fMjVnhWI.net
> まず示したように、「イベントデリゲーション」なんて言葉は誰も使ってないから止めとけ。



https://developer.mozilla.org/ja/docs/Web/API/Event/target
event.target プロパティは、イベントデリゲーションを実装するために使用できます。

https://developer.mozilla.org/en-US/docs/Web/API/Event/target
The event.target property can be used in order to implement event delegation.

655 :デフォルトの名無しさん:2020/07/24(金) 08:56:14 ID:9v9Epd9J.net
> まず示したように、「イベントデリゲーション」なんて言葉は誰も使ってないから止めとけ。

えーっと、ボクチン英語が分かりませーんという話かな?www
英語
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_delegation
日本語
https://developer.mozilla.org/docs/Learn/JavaScript/Building_blocks/Events#Event_delegation

656 :デフォルトの名無しさん:2020/07/24(金) 08:58:29.43 ID:L9K/ZYyg.net
URLからしてイベントデリゲーション使ってるなw
誰も使ってない用語とは…?w

657 :デフォルトの名無しさん:2020/07/24(金) 08:58:39.33 ID:fMjVnhWI.net
>>651
> イベントバブルの説明に必ず出てくる言葉なら、

でてくるわけねーだろw
イベントバブル=イベントデリゲーションじゃねーんだから

DOM APIのイベントモデルではイベントバブルがデフォルトで使われる
イベントモデルの説明でバブルフェーズとキャプチャフェーズの話は出る
だがイベントデリゲーションはかならず使うものではない

お前が、イベントバブル=イベントデリゲーション (つまり同じ意味)だと
勘違いしてるから、使用頻度=ヒットページ数も1:1になるという間違った結論になってる

イベントデリゲーションはかならず使うものじゃないんだから
イベントデリゲーションの方が数は少なくなるのは当たり前

658 :デフォルトの名無しさん:2020/07/24(金) 09:03:00.98 ID:9v9Epd9J.net
プッチンプリンとにんにく卵黄は同じものだ!
その証拠に、卵黄にんにくのほうが検索ヒット数が少ない!!

にんにく卵黄なんて用語は誰も使ってない!
プッチンプリンが正しい!!


???wwwww

659 :デフォルトの名無しさん:2020/07/24(金) 09:08:11.32 ID:fMjVnhWI.net
>>652
> 俺は「イベントバブルを最初に実装した『フレームワークが』がHTMLだと言った。

HTMLの仕様にイベントバブルなんてものはない
DOM APIの仕様だ

「イベントバブルを最初に実装した」というのはどういう意味か言ってみ
上の要素でイベントを捕まえて処理することではないのはもう理解してるよな

お前は「イベントがDOM要素の下位から上位へバブルのように登っていくこと」を実装した。
と言ってるわけだが、自分で理解してるのか?

660 :デフォルトの名無しさん:2020/07/24(金) 09:09:27.92 ID:fMjVnhWI.net
>>652
> むしろお前がそれを書けないと言っているに近いが、それをお前は認めるか?

だからさっさと書けよ。お前をテストしてやってるに決まってるだろw
最初からコード書けと言ってるのになんで書けないのは
お前がそれを書けないと言っているに近いが、それをお前は認めるか?

661 :デフォルトの名無しさん:2020/07/24(金) 09:21:46.61 ID:fMjVnhWI.net
脱jQueryなんて言葉が出てきても、脱jQueryが進んでいないのは事実だろ

https://w3techs.com/technologies/history_overview/javascript_library/all/y

jQuery
2017年1月 71.9%
2018年1月 73.1% (+0.1%/月)
2019年1月 73.6% (+0.05%/月)
2020年1月 74.2%
同年2月 74.4% (+0.2%/月)※1ヶ月経過時点
同年6月 75.5% (+0.26%/月))※5ヶ月経過時点
同年7月 76.0% (+0.3%/月)※6ヶ月経過時点

今年はなぜかjQueryのシェアの増加が加速してきてるんだわ。
最初の1ヶ月で0.2%しか増えてなかったのに、
6ヶ月後は1.2%増ではなく1.8%増、増加スピードが上がってる

後半さらに増加スピードが上がるとは思えないが、
このペースだと今年は1年で4%も増える可能性だってある。
ここ数年1%程度しか増えていなかったのに不思議だ

脱jQueryなんて所詮言葉だけだったということだ

662 :デフォルトの名無しさん:2020/07/24(金) 09:24:24.50 ID:2LubhzPR.net
>>657
> イベントデリゲーションはかならず使うものじゃないんだから
> イベントデリゲーションの方が数は少なくなるのは当たり前
ここが違う。
バブルを利用する時点で「親で纏めて処理する」大前提なんだよ。これも既に言ったが。
逆に、バブルだけしても親で処理しないのなら意味無いだろ。
(まあバブル自体は勝手にするのだが)

だからイベントバブルの説明の際には必ず「親で処理する」事が含まれるんだよ。
これもお前みたいな文系馬鹿は「知識」としてそれぞれを別々にインストールしているから分からないのだろうが、
イベントバブルの説明=イベントバブル自体とその使い方の説明=当然親でイベントを纏めて処理する=「イベントデリゲーション」も説明される
なんだよ。イベントバブルをお前はJavaScriptの「知識」として捕らえ、
「バブルフェーズとキャプチャフェーズ」もまた別の知識であり、
「イベントデリゲーション」も全く別の手法として「別知識」としているから駄目なんだ。

イベントバブルだけ理解しても、普通は、「ほ〜ん、で?何が嬉しいの?」となるから、どうやって使うか、何が美味しいかまで説明されてる。
だけどそこでは誰も「イベントデリゲーション」と言ってないから1000:1の使用頻度になってる。
ただし実際にイベントバブルを活用するにはそれなりの知識と設計が必要であり、
初心者には無理だから初心者用サイトでの説明は皆無で、既に言ったとおり俺が知っているのはuhyohyoだけ。
そしてここら辺が有機的に繋がっているのを理解出来ないのは君が「イベントバブルを活用するのは難しい初心者」レベルだから。

お前は相変わらず初心者のままなんだよ。

663 :デフォルトの名無しさん:2020/07/24(金) 09:30:06.20 ID:fMjVnhWI.net
> バブルを利用する時点で「親で纏めて処理する」大前提なんだよ。これも既に言ったが。

誰が言ってるんですか?
そうであってほしいという願望ですよねw

664 :デフォルトの名無しさん:2020/07/24(金) 09:35:52.90 ID:2LubhzPR.net
>>659
> DOM APIの仕様だ
まあ厳密にはあれはDOMに入れるべき物でもないんだよ。
だから今も「For web developers(non-nomative)」という中途半端な扱いになってる。
あれはDOMと言うよりはプログラミングモデルであって、本来は別仕様を起こすべきなのだが、
それを言いだしたらきりがないから現状はDOMに突っ込まれているだけでさ。

> 「イベントバブルを最初に実装した」というのはどういう意味か言ってみ
> お前は「イベントがDOM要素の下位から上位へバブルのように登っていくこと」を実装した。
そうだぞ。俺はそう言ったんだ。
イベントがバブルするGUIフレームワークというのは、俺が知ってる中ではHTML/CSS/JavaScriptが初だよ。
それ以前の、XやMFC、.NET(Forms)ではバブルしない。

むしろお前は何をどう勘違いして俺に突っかかってきてるんだ?


>>660
お前が簡単に書けるのなら書かないよ。書く意味もないし。
それってconsoleログ知ってる俺スゲー的なレベルであって、そんなもん一々コード書いてても時間の無駄だろ。


>>661
そう思うのならそれでいいと思うが。
必死にjQueryにすがるからおかしくなるだけで。
必要ない人はjQueryを使わないし、実際必要なくなりつつあるだけの話で、必要だと思えば使い続ければいいし、それだけだろ。

665 :デフォルトの名無しさん:2020/07/24(金) 09:39:24.99 ID:2LubhzPR.net
>>663
なら逆に、「イベントバブルを利用するが親ではイベントを処理しない」方式で何か有効活用出来るか?
それがあれば「大前提」ってのは俺の勘違いだと認めるが。

666 :デフォルトの名無しさん:2020/07/24(金) 09:39:35.00 ID:fMjVnhWI.net
さて、どこに親で処理すると書いてあるのでしょうか?w
https://en.wikipedia.org/wiki/Event_bubbling

Use of Event Bubbling
To handle cases where one event has more than one handler,
event bubbling concept can be implemented. The major use of
event bubbling is the registration of default functions present in the program.
In recent times, not many developers use event capturing or bubbling in particular.
It is not necessary to implement event bubbling; it may become complicated for
the users to keep track of the actions getting executed because of an event.[1]

英語は読めるけど(あんたために、でも面倒なので)Google翻訳しますねw

イベントバブリングの使用
1つのイベントに複数のハンドラーがある場合を処理するために、イベントバブリングの概念を実装できます。
イベントバブリングの主な用途は、プログラムに存在するデフォルト関数の登録です。
最近では、特にイベントキャプチャやバブリングを使用する開発者は多くありません。
イベントバブリングを実装する必要はありません。イベントのために実行されるアクションを
ユーザーが追跡するのは複雑になる場合があります。[1]



「1つのイベントに複数のハンドラーがある場合を処理するため」というのは
要素をクリックしたときに、クリックした要素→それが含まれた親要素→さらにそれらが含まれた親要素と
複数の要素(の複数のクリックイベントハンドラ)が実行されるわけです。
これがイベントバブリングの例として上げられています。

そして主な用途はデフォルト関数(デフォルト処理)の登録です。
またイベントキャプチャやバブリングを使用する開発者は多くないとまで書いてあります。
親でまとめて処理する話はでてきていません。

面白いですね(笑)

667 :デフォルトの名無しさん:2020/07/24(金) 09:41:46.92 ID:fMjVnhWI.net
>>664
> むしろお前は何をどう勘違いして俺に突っかかってきてるんだ?

何をどうって、jQueryはイベントバブリングしかサポートしてないのに
jQueryでイベントバブルを使うと意味がないと言っただろw

どういう意味ですか?jQueryはイベントバブルしか使いませんよ?
イベントバブルを使うということは親で処理するって意味じゃありませんよ?
わかってますかw

668 :デフォルトの名無しさん:2020/07/24(金) 09:42:35.90 ID:fMjVnhWI.net
>>665
> なら逆に、「イベントバブルを利用するが親ではイベントを処理しない」方式で何か有効活用出来るか?
英語のwikipediaにかいてある。

> それがあれば「大前提」ってのは俺の勘違いだと認めるが。
それがあったのでお前の勘違いだと認めるようにw

669 :デフォルトの名無しさん:2020/07/24(金) 09:43:33.55 ID:fMjVnhWI.net
>>664
> イベントがバブルするGUIフレームワークというのは、俺が知ってる中ではHTML/CSS/JavaScriptが初だよ。

HTML/CSS/JavaScriptのいずれの仕様でもありません。

DOMの仕様です。DOMです。Javaでも使えるDOMです。
何度言えば理解できるんだ?

670 :デフォルトの名無しさん:2020/07/24(金) 09:48:58.90 ID:2LubhzPR.net
>>666
wikiじゃねーかよ!そりゃ書いた奴が分かってねえんだよ。
既に言ったが、世の中のGUIフレームワークはイベントバブルをこぞって採用してる。
.NETはWPFから、GTKは3から。Qtは知らんが間違いなく採用はされるかその方向の筈。
理由も既に言ったとおり、バブルが出来れば非常に効率よくGUIを実装出来るから、
それに慣れると、バブルが出来ないフレームワークなんてゴミにしか見えなくなるから。


>>667-669
どうにもお前とは話が噛み合わないからこの辺で終わりにしておこう。
色々既に言ったとおりだ。気になるなら読み返してみてくれ。

671 :デフォルトの名無しさん:2020/07/24(金) 09:49:55.44 ID:fMjVnhWI.net
>>670
> wikiじゃねーかよ!そりゃ書いた奴が分かってねえんだよ。

お前はwikipedia以外のなにか信用できるものを持ってきたか?
お前の意見はwikipedia以下だってことは理解してるか?

672 :デフォルトの名無しさん:2020/07/24(金) 09:52:19.09 ID:fMjVnhWI.net
>>670
jQueryは最初からイベントバブルを採用してるのを知らないで
イベントバブルだとjQueryの意味がなくなる!

といった話はどうなったの?w

別の話に逃げたねw

673 :デフォルトの名無しさん:2020/07/24(金) 10:00:24.59 ID:fMjVnhWI.net
まとめ更新

こいつはイベントバブルの用途をイベントデリゲーション(複数の要素に同じイベントハンドラを割り当てるコード)しかしらず
イベントバブル=イベントデリゲーションのことだ!と思い込んでオレオレ用語で「イベントバブルを実装!」と言っていた
こいつは自分にしか理解できない間違った用語の使い方を指定ながら、コミュニケーションがどうとか語っていた

こいつはMDNにかかれているイベントデリゲーションのページを見せても
世の中で使われてない!と強弁した。

こいつはHTML/CSS/JavaScriptがイベントバブルを実装した最初のフレームワークだと言った。
(当たり前がHTMLはマークアップ言語、CSSはスタイルシート、JavaScriptは言語で
どれにもイベントバブルに関する実装など存在しない。イベントバブルはDOMで規定されている)

こいつはjQueryは最初からイベントバブルに対応していたことも知らず、
(というか古いIEがイベントバブルしか実装されていなかったのでキャプチャフェーズに対応するのは不可能)
イベントバブルを使うとjQueryを使う意味がないと言った。

そしてjQueryで書いているコードを見たことがない、もしくは見たことあっても気づかないで
jQueryでもDOM APIと同じように書くしかないはずだ!だからjQueryを使う意味がない!と言っていた。
jQueryで(イベントバブルではなくw)イベントデリゲーションで実装してるコードを見せても
イベントバブルを使ってない!とか意味のわからないことを言った。

イベントデリゲーションこそjQueryだとDOM APIよりもシンプルに書けるコードの一つだった

こいつは脱jQueryが進んでいない現状を示しても、その事実を受け入れることができなかった

674 :デフォルトの名無しさん:2020/07/24(金) 10:01:50.66 ID:fMjVnhWI.net
jQueryおじさん完全勝利(笑)

675 :デフォルトの名無しさん:2020/07/24(金) 10:12:17.88 ID:2LubhzPR.net
>>671
一応読んだぞ。

まあそう思うのは自由だが、それは最初に書いてあるとおり、
> To handle cases where one event has more than one handler, event bubbling concept can be implemented. The major use of event bubbling is the registration of default functions present in the program.
つまり一つのElementに複数のイベントハンドラを付けたい時にバブルを活用出来るとか、
或いはrootにデフォルトのイベントfunctionを付けておけばそれを「上書き」する際に活用出来る、みたいなわけだが、
そんな使い方してるサイトなんて無いぞ。というかそんなことしたら怒られると思うが。
複数付けたければ普通にaddEventListenerすればいいだけだし、
サイトのスクリプトがユーザースクリプトその他によって「上書き」される前提で書いているサイトなんてほぼ無い。
あるにしてもこんな邪道なやり方ではなく、「サイトのスクリプトをオフにする」という、公式な無効化機能が付いてる。
というか、そうじゃないとお互いに困るだろ。お前はそれも分からないレベルなのだろうけど。


>>672
逃げたって何の事よ?
jQueryが採用しているとかそういう話ではなくて、
そもそもバブルは(お前が拘っている『DOMの仕様』なのだから)jQueryとは関係なく、勝手にする物だ。
そしてバブルを利用した書き方=親で纏めて処理する方式なら、
jQueryの得意とするqueryをすることがないからjQueryを使う意味がない、と言ったんだよ。
それはお前が本当に『書ける』というのならすぐに分かる話だろ。
お前はやっぱり書けないのだと思うよ。

676 :デフォルトの名無しさん:2020/07/24(金) 10:13:31.15 ID:fMjVnhWI.net
もう負け逃げしたようだが、
イベントバブルの一番のユースケースはこれなんだよ

<a href="link">link<span>test<span></a>

1. aのクリックイベントハンドラ
2. spanのクリックイベントハンドラ

両方のイベントハンドラを設定することができ
両方のイベントハンドラが発動する
これがwikipediaに書いてあったことの具体的な意味

そのイベント発動を行うフェーズがバブリングフェーズとキャプチャフェーズの二種類あり
バブリングフェーズにおいて下位の要素から上位の要素に伝搬することを
イベントバブリング(イベントバブル動作)という
(イベントバブルだけでは意味が不明確)

677 :デフォルトの名無しさん:2020/07/24(金) 10:15:13.60 ID:fMjVnhWI.net
>>675
まだ繰り返すのかw

> jQueryの得意とするqueryをすることがないからjQueryを使う意味がない、と言ったんだよ。

めんどくさいから突っ込まなかったことろを再掲するとかアホやなぁ
「queryをすること」ってなんだよ。どういう意味なのか言ってみ
queryしているコードを書いてみろって

678 :デフォルトの名無しさん:2020/07/24(金) 10:17:09.02 ID:fMjVnhWI.net
先に書いてやるか
jQueryでqueryすること(意味がよくわからんが)と言われれば
普通に思いつくのは、$('#id1"') とかなわけだが

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


https://jsfiddle.net/m8q15376/
$("#id1").on('click', 'a', function() {
 $(this).css("background", "red");
});

679 :デフォルトの名無しさん:2020/07/24(金) 10:18:57.42 ID:fMjVnhWI.net
>>675
> つまり一つのElementに複数のイベントハンドラを付けたい時にバブルを活用出来るとか、

そんなことは英語に書いてない

> To handle cases where one event(一つのイベントが) has more than one handler (一つ以上のハンドラを持っている場合), event bubbling concept can be implemented.

「一つのElementに複数のイベントハンドラを付けたい」などとは書いていない。

680 :デフォルトの名無しさん:2020/07/24(金) 10:20:19.73 ID:fMjVnhWI.net
せっかくGoogle翻訳もしてやったのに
英語読めないなら、ちゃんと日本語も読めよ(笑)

681 :デフォルトの名無しさん:2020/07/24(金) 10:23:00.47 ID:fMjVnhWI.net
>>675
> そもそもバブルは(お前が拘っている『DOMの仕様』なのだから)jQueryとは関係なく、勝手にする物だ。

お前最初に、バブルは勝手にするものじゃなくて
親でまとめてイベント処理することだって言ってたじゃんwww

自分が使っていた用語が間違っていましたって認めたの?

682 :デフォルトの名無しさん:2020/07/24(金) 10:42:49.37 ID:2LubhzPR.net
>>677
> queryしているコードを書いてみろって
それはお前が>>623,624で既に書いてるだろ。
jQueryが美味しいのは、getElementByIdとか長たらしいこと書かずに$('#id')と書けるとか、
HTMLCollectionなのに単発のDOMみたいに扱えてforやforEach等のループを自前で書く必要がないとか、そういうところだろ。

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

ただまあ、jQueryがそこまで好きならjQueryで一生書けばいいとも思うけど。
俺は必要ないから今後とも使わないだけであって。

683 :デフォルトの名無しさん:2020/07/24(金) 10:44:01.60 ID:2LubhzPR.net
>>681
> 親でまとめてイベント処理することだって言ってたじゃんwww
そうだぞ。イベントバブルを活用する=親で纏めて処理する、だ。
それ以外のまともな使い方は俺は知らん。(以下に続く)

>>679
おお、確かに読み間違えてる。
一つのイベントが複数のイベントハンドラを持ちたい場合か。
しかし何だそりゃ?て話だがな。
一つのイベントに複数のハンドラを持たせたい為にバブルさせてそれぞれの階層で処理させて結果的に複数処理するってのは、
実際の動きを説明していると言えばそうだが、これの為にバブルを活用するのは間違いだと思うが。

ただまあ、wikiはこの辺デタラメに書く奴が居るからそこまでは信用しない方がいい。
Cの日本語wikiとかも結構デタラメだったりするし。

逆に、本当にこのケース「一つのイベントに複数のハンドラを持たせたい為」にバブルを利用して、
それ以外の方法では美しく実装出来ないケースがあれば確かに俺の勘違いだと認めるが、あるか?
何度も言ってるが、俺はそれがないから「バブルを利用する=親で纏めて処理」だと思っているわけでさ。

或いはこの記述、ユーザ目線ではなくブラウザ目線で書かれている?
mouseleave/outの違いとか、
確かにmouseoutは一つのイベントを複数階層で処理して結果的に複数のハンドラを一つのイベントに与えている、とは言えるけども。
https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event

684 :デフォルトの名無しさん:2020/07/24(金) 10:44:43.06 ID:fMjVnhWI.net
>>682
> そして俺が言ってるのは、親にeventhandlerを付けるのならその辺のおいしさが全くなくなる、ということだよ。

だからその親にeventhandlerを付けるコード書けって言ってるんだが?
俺はそれがすごく読みづらくなって、jQueryで書いたらシンプルになると知ってるわけ
さっさと書けよ。ここまで言って書かないのは、
お前がそれを書けないと言っているに近いが、それをお前は認めるか?

685 :デフォルトの名無しさん:2020/07/24(金) 10:45:17.15 ID:fMjVnhWI.net
>>683
> 一つのイベントが複数のイベントハンドラを持ちたい場合か。
> しかし何だそりゃ?て話だがな。

知らんのね(笑)

686 :デフォルトの名無しさん:2020/07/24(金) 10:46:32.32 ID:fMjVnhWI.net
>>683
> 逆に、本当にこのケース「一つのイベントに複数のハンドラを持たせたい為」にバブルを利用して、
> それ以外の方法では美しく実装出来ないケースがあれば確かに俺の勘違いだと認めるが、あるか?

俺の勘違いだと認めるがと言っておきながら、
wikipediaの例を出したら認めなかっただろ
嘘つきだよなw

687 :デフォルトの名無しさん:2020/07/24(金) 10:48:00.94 ID:fMjVnhWI.net
> 何度も言ってるが、俺はそれがないから「バブルを利用する=親で纏めて処理」だと思っているわけでさ。

jQueryはイベントバブルにしか対応してないから、
すべてがイベントバブルを利用してるの
親でまとめて処理してなくてもイベントバブルを利用してるの

688 :デフォルトの名無しさん:2020/07/24(金) 10:52:08.90 ID:fMjVnhWI.net
> 逆に、本当にこのケース「一つのイベントに複数のハンドラを持たせたい為」にバブルを利用して、
> それ以外の方法では美しく実装出来ないケースがあれば確かに俺の勘違いだと認めるが、あるか?

一つのイベント・・・click
それ以外の方法では美しく実装出来ないケース・・・google map

お前の勘違いだって認めようねw

689 :デフォルトの名無しさん:2020/07/24(金) 11:03:32.54 ID:9v9Epd9J.net
プッチンプリンとにんにく卵黄は同じものだ!
その証拠に、にんにく卵黄のほうが検索ヒット数が少ない!!

にんにく卵黄なんて用語は誰も使ってない!
プッチンプリンが正しい!!


???wwwww

690 :デフォルトの名無しさん:2020/07/24(金) 11:09:00.66 ID:2LubhzPR.net
>>684-687
まあやはり堂々巡りか。

wikiに書いてる使い方で活用出来るかについては考えてはみるよ。
ただし、既に言ったが、今のところ俺はそんなの見たこと無いが。

お前が勘違いしているのは、デタラメな使い方でもちゃんとした使い方だ!と思っていること。
それは文系初心者プログラマにも多い、全ての文法を使える人が上級者だ!と勘違いしていたりするのにも近い。

実際はそうじゃない。
例えばキャプチャフェーズとかも実装されているから確かに使えるが、俺はそれを上手く使っている例を見たことがない。
正確に言えば、まともに設計すればキャプチャフェーズなんて必要な事がないから、誰も使ってないだけだが。
バブルにしても、邪道な使い方はいくらでも出来るが、そうではなくて、
正しい使い方=それ以外の方法ではそれ以上に美しく実装出来ない使い方なのか、ということだよ。
「一つのイベントに複数のハンドラ」も、addEventListerを複数行えば普通に実装出来る。
バブルさせる意味はないし、実際、バブルしない.NET(Forms)等でもこれは普通に可能だ。

だからまあ、君にも分かる書き方をするなら、
・バブルしないX、MFC、.NET(Forms)、GTK2等でも書ける事=バブルを活用しているわけではない
・バブルしないX、MFC、.NET(Forms)、GTK2等では出来ない書き方=バブルを活用している
なんだよ。そして複数のイベントをサブスクライブするのは.NET(Forms)は出来るから、
それはバブル必須ということにも、バブルを活用していることにもならない。
そしてその場合にはJavaScriptでも「バブル」ではなくaddEventListerを複数行うのが正道だよ。

691 :デフォルトの名無しさん:2020/07/24(金) 11:10:04.24 ID:2LubhzPR.net
>>688
> 一つのイベント・・・click
> それ以外の方法では美しく実装出来ないケース・・・google map
うむ、これについて詳しくよろしく。

692 :デフォルトの名無しさん:2020/07/24(金) 11:12:00.44 ID:fMjVnhWI.net
>>690
堂々巡りなのはお前が間違いを認めないからだろ

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

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

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

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


https://jsfiddle.net/m8q15376/
$("#id1").on('click', 'a', function() {
 $(this).css("background", "red");
});

693 :デフォルトの名無しさん:2020/07/24(金) 11:12:45.73 ID:fMjVnhWI.net
>>691
> うむ、これについて詳しくよろしく。

すでにお前は逃げてるからなw
先にお前の勘違いだったって認めろ。

先に認める文章をお前が書け
そうしたら説明してやるから

694 :デフォルトの名無しさん:2020/07/24(金) 11:17:44.62 ID:2LubhzPR.net
>>693
逃げてるも何も、そのやり方が正道でなければそりゃ認めないよ。
既に言っているし、君も知っているはずだが、プログラミングなんて糞な書き方は無限に出来るわけでさ。

ふと考えたが、eをもしかしてmutable扱いか?
これは若干邪道だけども、そうしないと無理(それ以外での実装では大量なコードが必要)ならそれもありではあるが。

695 :デフォルトの名無しさん:2020/07/24(金) 11:19:41.76 ID:fMjVnhWI.net
>>694
言い訳はいいからさ、>>692のコードをお前がいうコードで書き直してみろって
ここまで言って書かないのは、
お前がそれを書けないと言っているに近いが、それをお前は認めるか?

まだこれ認めてないよな?

696 :デフォルトの名無しさん:2020/07/24(金) 11:20:24.05 ID:fMjVnhWI.net
こいつは何一つコードを書かない
俺はすでに書いている

697 :デフォルトの名無しさん:2020/07/24(金) 11:21:33.78 ID:2LubhzPR.net
>>694 訂正
693と思ったが、見る限りほぼ「読みとり専用」だから無理だな。
https://developer.mozilla.org/ja/docs/Web/API/Event

698 :デフォルトの名無しさん:2020/07/26(日) 04:16:24.04 ID:GfAtypzY.net
誰かjsで書ける珍しいコードのせてくれや

699 :デフォルトの名無しさん:2020/07/26(日) 21:49:52.62 ID:f+jrD57t.net
>>698
ど素人かど初心者ほど訳の分からないコードを書くから、そういうの探せば?
Web板で聞いた方が受けると思うけど。実際その程度の連中で埋め尽くされてるし。

700 :デフォルトの名無しさん:2020/07/27(月) 17:27:45.80 ID:2I3xUck9.net
>>699
なるほど 納得

466 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200