JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net (760レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
609
(1): 2020/07/23(木)21:58 ID:k24nyzXR(1/21) AAS
>>606
>  (なおjQueryでもbubble主体で書くことは可能ではあるが、それをやるとjQueryの意味がほぼ無くなるので普通はやってないと思う)

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

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

間違ったことを書かないでください
610: 2020/07/23(木)22:00 ID:k24nyzXR(2/21) AAS
>>607
> 現実的には使いにくく、俺はイベントハンドラを集めたオブジェクト(その中に共通関数も入っている)をthisとしてcallし直して、
> イベントハンドラ内ではthis.my_sub_function()で共通関数を呼べるようにしている。
> この場合、thisは単なるオブジェクトなので、継承出来るのがいい。(共通関数の共通関数を__proto__側に追い出せる)

やめましょう。無関係のイベントハンドラをまとめることは
単一責任の原則に違反しています。
611: 2020/07/23(木)22:01 ID:k24nyzXR(3/21) AAS
>>607
> イベントハンドラ内でthisをe.currentTargetとして利用することはガチのサイトではほぼ無い、ということ。
いいえ。殆どがthisを使っています。e.currentTargetは冗長なだけです。
612
(1): 2020/07/23(木)22:41 ID:k24nyzXR(4/21) AAS
>>606
> DOM APIのthisがe.currentTargetを指すのはそもそもJava用の仕様、
> つまりJavaでもクライアントスクリプトを書けるようにする為の仕様らしい。(とここ5chで聞いた)

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

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

また昔のIEはaddEventListnerがなくattachEventを使いますが。
attachEventの場合thisはwindowでありe.currentTargetではありません。
省3
613
(2): 2020/07/23(木)22:44 ID:k24nyzXR(5/21) AAS
>>606
> JavaScriptにおいてはe.targetを全面的に使うのが正しい。
いいえ。e.targetは廃止されてます。
外部リンク:developer.mozilla.org

わざと正反対のことを書いてるんですかね?
615: 2020/07/23(木)22:49 ID:k24nyzXR(6/21) AAS
>>614
> バブル主体で書くとそもそもqueryしないから

そういう意味ですか?
意味不明なので他のわかりやすいサイトを
探し出してください
616: 2020/07/23(木)22:49 ID:k24nyzXR(7/21) AAS
×そういう意味ですか?
○どういう意味ですか?
617: 2020/07/23(木)22:50 ID:k24nyzXR(8/21) AAS
>それは君がbubbleを使ってないから。

bubbleを使うとやらのコードを書いてください
618: 2020/07/23(木)22:53 ID:k24nyzXR(9/21) AAS
Description: The current DOM element within the event 「bubbling」 phase.
外部リンク:api.jquery.com
620: 2020/07/23(木)22:54 ID:k24nyzXR(10/21) AAS
jQuery event.currentTarget
日本語訳 説明:イベントバブリングフェーズ内の現在のDOM要素。
621
(1): 2020/07/23(木)22:55 ID:k24nyzXR(11/21) AAS
>>619
だからjQueryはバブルしかサポートしてないし、
jQueryのevent.currentTargetは(DOM APIと同じで)
イベントバブリングフェーズ内の現在のDOM要素。
622
(4): 2020/07/23(木)22:57 ID:k24nyzXR(12/21) AAS
>>619
> そしてbubbleを使わずに一々全Elementにイベントを付けていくのは完全に旧式であって、

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

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

知ってましたか?w
623
(5): 2020/07/23(木)23:16 ID:k24nyzXR(13/21) AAS
外部リンク:jsfiddle.net

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

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

$("#id2 a").on('click', function() {
 $(this).css("background", "red");
});
625
(1): 2020/07/23(木)23:21 ID:k24nyzXR(14/21) AAS
もうわかりましたね? ID:QHkNbR5l はイベントデリゲーションのことを
バブルなんて言ってるわけです(笑)

外部リンク:developer.mozilla.org
> event.target プロパティは、イベントデリゲーションを実装するために使用できます。

所詮オレオレ用語を使うレベルなんですよ
627: 2020/07/23(木)23:22 ID:k24nyzXR(15/21) AAS
>>624
> 知ってる。そしてそれだとjQueryを使う意味が無い=生のDOMAPIでも同様に書けるだろ

では生のDOM APIを使ってe.targetなしで書いてみてください。
できますか? jQueryはe.targetなしで書きました。
628: 2020/07/23(木)23:23 ID:k24nyzXR(16/21) AAS
>>626
> だからそれ明らかにイベントバブル使ってないじゃん。]

最初に言ったよね?イベントバブル使うコードかけって
なんでお前かけないの?
629: 2020/07/23(木)23:24 ID:k24nyzXR(17/21) AAS
>>626
1. jQueryのコードはイベントバブルしか使わない(使えない)
2. >>622のコードはe.targetを使ってない

ここまではいいですかねぇ(呆れ)
631
(1): 2020/07/23(木)23:28 ID:k24nyzXR(18/21) AAS
> イベントバブルを最初に実装したフレームワークはHTMLで、

笑うしかないわw HTMLがフレームワークとかw
632
(1): 2020/07/23(木)23:29 ID:k24nyzXR(19/21) AAS
> イベントデリゲーションってのは確かにそこにあるが、初めて聞いたが。

はい、初めて聞くレベル
634: 2020/07/23(木)23:30 ID:k24nyzXR(20/21) AAS
> e.targetについては、
> 複数の要素に同じイベントハンドラを割り当てて、どれかでイベントがあったときに何かさせたいような場合、e.target はとてつもなく有用なものです。

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

外部リンク:jsfiddle.net

$("#id1").on('click', 'a', function() {
 $(this).css("background", "red");
});
635
(1): 2020/07/23(木)23:56 ID:k24nyzXR(21/21) AAS
まとめ

こいつはイベントデリゲーション(複数の要素に同じイベントハンドラを割り当てるコード)を
jQueryで書いているコードを見たことがない、もしくは見たことあっても気づかないで
jQueryでもDOM APIと同じように書くしかないはずだ!だからjQueryを使う意味がない!と考えていたようだが
そのイベントデリゲーションこそjQueryでシンプルに書けるコードの一つだったという話です。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s