私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.109 +

みんなの評価 :
レスフィルター : (試験中)
>>546はx=a.bとかやってx()で呼び出す場合に、
関数bの中でaをthisとして参照できない問題を解決したいんじゃないの?
関数bの中でaをthisとして参照できない問題を解決したいんじゃないの?
$(document).on('click',a.b);
などとすると、thisではbからaを得ることが出来ないのです
などとすると、thisではbからaを得ることが出来ないのです
あー、なるほど
結局、thisキーワードを使わなければ良いのだね?
結局、thisキーワードを使わなければ良いのだね?
sageるの忘れてたすまん
$(document).on('click',function(evt){ a.b(evt); });
こうするのと、どっちが効率よいのだろう
$(document).on('click',function(evt){ a.b(evt); });
こうするのと、どっちが効率よいのだろう
ビルド方式はイニシャルコストがかかりますがハンドラ呼び出しコストは低いというメリットがあります
もともとオブジェクトを走査していくクラスビルド関数があったので、
$_で始まる関数名を持つメソッドに親オブジェクトを持たせる機能を組み込んだら
いい感じになりました
$_で始まる関数名を持つメソッドに親オブジェクトを持たせる機能を組み込んだら
いい感じになりました
addEventListenerの第二引数にオブジェクトを指定すると
オブジェクトのhandleEventメソッドを呼んで、thisはオブジェクトを指してくれるらしいので
IE8以下用にaddEventListenerをエミュレートする関数を用意してあげれば多くのことが解決するのでしょうか?
オブジェクトのhandleEventメソッドを呼んで、thisはオブジェクトを指してくれるらしいので
IE8以下用にaddEventListenerをエミュレートする関数を用意してあげれば多くのことが解決するのでしょうか?
そんな仕様あったっけ?
いずれにしろ呼び出されるのがhandleEventメソッド固定ならほとんど使い道がないような
いずれにしろ呼び出されるのがhandleEventメソッド固定ならほとんど使い道がないような
>>559
関数でラップせずに閉じたスコープが作れるとか
関数でラップせずに閉じたスコープが作れるとか
http://jsbin.com/amarUn/1/edit
documentに、body用のクリックハンドラを付けました
しかし四角をクリックしても反応してしまいます
bodyの上の要素に対するクリックがbodyまで突き抜けないようにするにはどうしたらいいですか?
documentに、body用のクリックハンドラを付けました
しかし四角をクリックしても反応してしまいます
bodyの上の要素に対するクリックがbodyまで突き抜けないようにするにはどうしたらいいですか?
stopPropagationで止めるとすると、イベントを遮りたいすべての要素にイベントを付けないといけなくなるので
bodyのclickハンドラでe.targetを見て判定したいと思います
$(document).on('click','body',fn)
とdocumentにデレゲートした場合、
e.targetのイベント発生元情報がデレゲート元オブジェクトに変わっているようです
e.targetを使う場合はデレゲートは使えないということでしょうか
bodyのclickハンドラでe.targetを見て判定したいと思います
$(document).on('click','body',fn)
とdocumentにデレゲートした場合、
e.targetのイベント発生元情報がデレゲート元オブジェクトに変わっているようです
e.targetを使う場合はデレゲートは使えないということでしょうか
すみません勘違いでした
stopPropagationしてたからe.targetが変わってただけでした(∵)
stopPropagationしてたからe.targetが変わってただけでした(∵)
↑なり済ましです!
すべてのイベントを一つのハンドラで受け取り
そこから分配するのは確かにいいかもしれませんね
そこから分配するのは確かにいいかもしれませんね
jqueryではイベントがfocus→focusin、blur→focusoutに名前が変わっているようですが何故ですか
querySelectorのセレクタについて質問です
<div>
<p><a>いいい</a></p>
<a>あああ</a>
</div>
div.querySelector("");
あああ だけを取得したいのですが、どのようなセレクタを書けばいいでしょうか?
イメージ的には > a のような感じです
<div>
<p><a>いいい</a></p>
<a>あああ</a>
</div>
div.querySelector("");
あああ だけを取得したいのですが、どのようなセレクタを書けばいいでしょうか?
イメージ的には > a のような感じです
document.querySelector('div > a').textContent
if(/version ([0-9\.]+)/.test(ua)) vn = RegExp.$1; else vn = 0;
のようなことをやってたのですがRegExp.$1~$9は廃止予定で非推奨と聞きました
RegExpオブジェクトを使わない場合どのような書き方ができるのしょうか
のようなことをやってたのですがRegExp.$1~$9は廃止予定で非推奨と聞きました
RegExpオブジェクトを使わない場合どのような書き方ができるのしょうか
>>581
RegExp.exec()の結果を使う。
RegExp.exec()の結果を使う。
vn = (ua.match(/version ([0-9\.]+)/)||"00")[1]
ならどれでも好きなのをどうぞ
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] //数値型
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] //数値型
これも好き
vn = ua.match(/version ([0-9\.]+)/)
vn = vn ? vn[1] : 0
vn = ua.match(/version ([0-9\.]+)/)
vn = vn ? vn[1] : 0
変数に入る型がバラバラなのは気持ち悪いな
だからもし>>584の場合は数値に揃えないんなら
0の代わりに空文字にして
最後出力する時に
vn || '0'
とした方がいいな
このやり方だとバージョンがないよと言う状態を持たせておいて
バージョンがなければ0にするっていうのがわかりやすい
vn || '無し'
みたいにしたくなってもとても良い
だからもし>>584の場合は数値に揃えないんなら
0の代わりに空文字にして
最後出力する時に
vn || '0'
とした方がいいな
このやり方だとバージョンがないよと言う状態を持たせておいて
バージョンがなければ0にするっていうのがわかりやすい
vn || '無し'
みたいにしたくなってもとても良い
数値と文字列はしっかり区別したいところだね。
やっぱり型付が緩い言語で一番問題になるのはここだから、
使う時じゃなくて事前に揃えておいた方がいいと思う。
やっぱり型付が緩い言語で一番問題になるのはここだから、
使う時じゃなくて事前に揃えておいた方がいいと思う。
>>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 "";
ありがとうございました
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 "";
Chrome、Firefox、IE9で開発をしています。
ソースコード中に旧型の8進数リテラルがあり、strict modeではエラーになります。
そこでモダンブラウザが対応している新型に切り替えたのですが、
今度は当然レガシーブラウザでエラーになります。
可読性を崩したくないのですがどうするのが一番よいでしょうか?
場合によってはレガシーブラウザは切り捨てます。
ソースコード中に旧型の8進数リテラルがあり、strict modeではエラーになります。
そこでモダンブラウザが対応している新型に切り替えたのですが、
今度は当然レガシーブラウザでエラーになります。
可読性を崩したくないのですがどうするのが一番よいでしょうか?
場合によってはレガシーブラウザは切り捨てます。
chromeでよく落ちるようになり、バグるようになりました
デバッガで追っていくと突然落ちたり、本来実行するべきじゃないところがいきなり実行されたり。
ロールバックすると起きなくなったのでコードに原因があったようです
JavaScriptで変なことをしても影響が環境の枠の外に及ぶのはおかしいと思うのですが
なんでそんなことが起きるんですか
デバッガで追っていくと突然落ちたり、本来実行するべきじゃないところがいきなり実行されたり。
ロールバックすると起きなくなったのでコードに原因があったようです
JavaScriptで変なことをしても影響が環境の枠の外に及ぶのはおかしいと思うのですが
なんでそんなことが起きるんですか
調べてみるとどうも宇宙線の影響だそうで、稀によくあることらしいです
ありがとうございました
ありがとうございました
今まで一つのハンドラで受けてtargetで分岐してたのを、
jQueryのデレゲートに置き換えたのがやったことです
その結果変な風になりました
一つのハンドラで受けていた場合、その処理が終われば他の同種のハンドラに飛びませんが
要素ごとにデレゲートした場合は飛ぶので、その結果変なことになったのか
あるいはbootstrapとの相性か
何なのか分かりませんが
jQueryのデレゲートに置き換えたのがやったことです
その結果変な風になりました
一つのハンドラで受けていた場合、その処理が終われば他の同種のハンドラに飛びませんが
要素ごとにデレゲートした場合は飛ぶので、その結果変なことになったのか
あるいはbootstrapとの相性か
何なのか分かりませんが



類似してるかもしれないスレッド
- + 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
トップメニューへ / →のくす牧場書庫について