元スレ+ JavaScript の質問用スレッド vol.109 +
JavaScript覧 / PC版 /みんなの評価 :
556 = :
ビルド方式はイニシャルコストがかかりますがハンドラ呼び出しコストは低いというメリットがあります
557 = :
もともとオブジェクトを走査していくクラスビルド関数があったので、
$_で始まる関数名を持つメソッドに親オブジェクトを持たせる機能を組み込んだら
いい感じになりました
558 = :
addEventListenerの第二引数にオブジェクトを指定すると
オブジェクトのhandleEventメソッドを呼んで、thisはオブジェクトを指してくれるらしいので
IE8以下用にaddEventListenerをエミュレートする関数を用意してあげれば多くのことが解決するのでしょうか?
559 = :
そんな仕様あったっけ?
いずれにしろ呼び出されるのがhandleEventメソッド固定ならほとんど使い道がないような
560 = :
>>559
関数でラップせずに閉じたスコープが作れるとか
561 = :
>>559
逆にイベントを直接受ける関数を1つにまとめられるからかなり有用だよ
イベントオブジェクトが引数に必要な関数ばかり作ると、
イベント発生の時にしか呼べない関数が多数できることになるし。
562 = :
同じところで受けたかったら同じメソッドを指定したらいいだけでは?
563 = :
http://jsbin.com/amarUn/1/edit
documentに、body用のクリックハンドラを付けました
しかし四角をクリックしても反応してしまいます
bodyの上の要素に対するクリックがbodyまで突き抜けないようにするにはどうしたらいいですか?
564 = :
>>563
$('#test').on('click',function(e){e.stopPropagation();});
ちなみに上じゃなくて下な。
W3Cにわかりやすい図がある
565 = :
ありがとうございます
イベント的にはルートノードが上なんですね
566 = :
stopPropagationで止めるとすると、イベントを遮りたいすべての要素にイベントを付けないといけなくなるので
bodyのclickハンドラでe.targetを見て判定したいと思います
$(document).on('click','body',fn)
とdocumentにデレゲートした場合、
e.targetのイベント発生元情報がデレゲート元オブジェクトに変わっているようです
e.targetを使う場合はデレゲートは使えないということでしょうか
567 = :
すみません勘違いでした
stopPropagationしてたからe.targetが変わってただけでした(∵)
568 = :
イベントのバブリングを止める話じゃなかったんか
解決したみたいだが、一応。(...こういうことだったのかな?)
http://jsbin.com/amarUn/10/edit
569 = :
すいませんがもう不必要です^^;
570 = :
↑なり済ましです!
571 = :
ここまで全部偽者ですw
573 = :
>>568
ありがとうございます
同じやり方でした
575 = :
すべてのイベントを一つのハンドラで受け取り
そこから分配するのは確かにいいかもしれませんね
576 = :
とても勉強になりました
578 = :
ライブラリだけの質問はライブラリスレでお願いします。
579 = :
querySelectorのセレクタについて質問です
<div>
<p><a>いいい</a></p>
<a>あああ</a>
</div>
div.querySelector("");
あああ だけを取得したいのですが、どのようなセレクタを書けばいいでしょうか?
イメージ的には > a のような感じです
581 = :
if(/version ([0-9\.]+)/.test(ua)) vn = RegExp.$1; else vn = 0;
のようなことをやってたのですがRegExp.$1~$9は廃止予定で非推奨と聞きました
RegExpオブジェクトを使わない場合どのような書き方ができるのしょうか
582 = :
>>581
RegExp.exec()の結果を使う。
583 = :
vn = (ua.match(/version ([0-9\.]+)/)||"00")[1]
584 = :
>>583
すげ~感心したが、その後でif(vn)とかやってると結果が>>581と変わっちまわない?
585 = :
ならどれでも好きなのをどうぞ
vn = (ua.match(/version ([0-9\.]+)/)||[0,0])[1] //オリジナル
vn = (ua.match(/version ([0-9\.]+)/)||"00" )[1] //文字列型
vn =+(ua.match(/version ([0-9\.]+)/)||"00" )[1] //数値型
586 = :
キモ
588 = :
変数に入る型がバラバラなのは気持ち悪いな
だからもし>>584の場合は数値に揃えないんなら
0の代わりに空文字にして
最後出力する時に
vn || '0'
とした方がいいな
このやり方だとバージョンがないよと言う状態を持たせておいて
バージョンがなければ0にするっていうのがわかりやすい
vn || '無し'
みたいにしたくなってもとても良い
589 = :
数値と文字列はしっかり区別したいところだね。
やっぱり型付が緩い言語で一番問題になるのはここだから、
使う時じゃなくて事前に揃えておいた方がいいと思う。
590 = :
>>582のアドバイスをいただいたあと色々調べて最終的に関数化しました
ありがとうございました
var r, ua = navigator.userAgent;
if(r = /MSIE ([0-9\.]+)/.test(ua)) return "IE " + r[1];
else if(r = /Chrome\/([0-9\.]+)/.exec(ua)) return "Chrome " + r[1];
else if(r = /Firefox\/([0-9\.]+)/.exec(ua)) return "Firefox " + r[1];
~
else return "";
591 = :
これはひどい。。。
592 = :
誤植だろ
593 = :
Chrome、Firefox、IE9で開発をしています。
ソースコード中に旧型の8進数リテラルがあり、strict modeではエラーになります。
そこでモダンブラウザが対応している新型に切り替えたのですが、
今度は当然レガシーブラウザでエラーになります。
可読性を崩したくないのですがどうするのが一番よいでしょうか?
場合によってはレガシーブラウザは切り捨てます。
594 = :
chromeでよく落ちるようになり、バグるようになりました
デバッガで追っていくと突然落ちたり、本来実行するべきじゃないところがいきなり実行されたり。
ロールバックすると起きなくなったのでコードに原因があったようです
JavaScriptで変なことをしても影響が環境の枠の外に及ぶのはおかしいと思うのですが
なんでそんなことが起きるんですか
595 = :
chromeがバグったんじゃね?
596 = :
困りますな~
597 = :
嘘乙
証拠のビデオうpはよ
598 = :
調べてみるとどうも宇宙線の影響だそうで、稀によくあることらしいです
ありがとうございました
599 = :
今まで一つのハンドラで受けてtargetで分岐してたのを、
jQueryのデレゲートに置き換えたのがやったことです
その結果変な風になりました
一つのハンドラで受けていた場合、その処理が終われば他の同種のハンドラに飛びませんが
要素ごとにデレゲートした場合は飛ぶので、その結果変なことになったのか
あるいはbootstrapとの相性か
何なのか分かりませんが
600 = :
jQuery固有の問題はライブラリスレで
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.100 + (1001) - [97%] - 2012/6/13 22:46
- + JavaScript の質問用スレッド vol.101 + (1001) - [97%] - 2012/7/16 14:15
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.103 + (1001) - [97%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.104 + (1001) - [97%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.105 + (1001) - [97%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.107 + (1001) - [97%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.119 + (1002) - [97%] - 2014/10/3 15:30
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.122 + (116) - [95%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.122 + (1004) - [95%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.141 + (881) - [95%] - 2021/4/19 9:00
トップメニューへ / →のくす牧場書庫について