のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,063,110人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ+ JavaScript の質問用スレッド vol.109 +

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    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固有の問題はライブラリスレで


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について