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

    私的良スレ書庫

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

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    451 : Name_Not - 2014/06/11(水) 02:42:38.02 ID:???.net (+74,+29,-63)
    >>390 のようなコードを書かずに済む様に
    $(this) の戻り値の仕様を、無いときはデフォルトの機能はするが何もしない
    オブジェクトを返すように変更するってできるのかな?

    あと、一般論的にライブラリをそういう風に設計するって悪い方法?
    452 : Name_Not - 2014/06/11(水) 02:46:23.57 ID:???.net (+16,-30,-232)
    >>451
    > $(this) の戻り値の仕様を、無いときはデフォルトの機能はするが何もしない
    > オブジェクトを返すように変更するってできるのかな?

    何を言ってるのかよくわからない。

    この話?
    http://api.jquery.com/jQuery/#jQuery
    > Returning an Empty Set
    >
    > As of jQuery 1.4, calling the jQuery() method with no arguments
    > returns an empty jQuery set (with a .length property of 0). In previous
    > versions of jQuery, this would return a set containing the document node.


    jQuery()を引数なしで呼び出したら、空のjQueryセットを返します。

    var $obj = $();
    $obj.css(~) // 何もしない
    453 : Name_Not - 2014/06/11(水) 02:47:10.13 ID:???.net (+57,+29,-35)
    自分が想像できないものはないw
    なんというお粗末な知性だろうか
    454 : Name_Not - 2014/06/11(水) 02:48:38.71 ID:???.net (+89,+29,-18)
    (何も言えないどうしよう・・・)

    (そうだ!相手に考えさせちゃえ)

    (自分も言えないが、相手を馬鹿にできるぞ!)
    455 : Name_Not - 2014/06/11(水) 02:49:05.51 ID:???.net (+69,+29,-1)
    >>454
    それはみんなわかってるからw
    456 : Name_Not - 2014/06/11(水) 02:52:48.75 ID:???.net (+9,-30,-108)
    では実際のコードを少し変更したものを。

    if ($.Hoge($(this).css('backgroundColor'))) === moge){
    $(this).addClass('page');
    }

    $.Hogeは色情報を扱うjqueryプラグインです
    背景色を正規化した上で比較し、クラスを設定しています
    これをどう変えたらいいですか?
    457 : Name_Not - 2014/06/11(水) 02:57:18.75 ID:???.net (+57,+29,-17)
    ちょw
    ふたたびお口チャックすかww
    458 : Name_Not - 2014/06/11(水) 03:03:51.56 ID:???.net (+51,+23,-47)
    フリーズww
    メソッドチェーン(わらい)で何とか出来るんじゃないんすか
    459 : Name_Not - 2014/06/11(水) 03:04:14.62 ID:???.net (+0,-29,-25)
    >>452
    そうか、別に null 返すわけではないのか
    if($(this)~)を if($(this))と読み違えてた
    460 : Name_Not - 2014/06/11(水) 03:29:54.16 ID:???.net (+57,+29,-20)
    何かおかしいなって思ったら
    最初に「いや自分が間違えてるんじゃないか?」って思うようにすれば恥かかなくて済むよ
    それがA級プログラマーの思考習慣
    461 : Name_Not - 2014/06/11(水) 03:50:13.12 ID:???.net (+38,-30,-246)
    >>456
    それは設計がおかしいね。HogeがjQueryプラグインになっている理由がない。
    つまり、jQueryの基本、「セレクタにマッチした要素全てに処理を行う」を満たしていない。

    変な(jQueryの思想を理解していない)プラグインを作っちゃったからそうなったわけ。
    jQueryプラグインとしてに書くならこうだよ。

    $(this).filter(function() { return $(this).css('backgroundColor') === moge}).Hoge().addClass('page')

    応用するとこんな風にしてコードの再利用もできる。

    function cssFilter(name, value) {
     return function() { return $(this).css(name) === value }
    }
    $(this).filter(cssFilter('backgroundColor', moge)).Hoge().addClass('page');
    462 : Name_Not - 2014/06/11(水) 03:53:38.70 ID:???.net (+8,-29,-13)
    $(this).filter $(this).css
    複数回生成してね?
    463 : Name_Not - 2014/06/11(水) 03:54:20.25 ID:???.net (+3,-30,-119)
    お、少し読み間違えていたw

    こうか。

    function hogeFilter(name, value) {
     return function() { return $.Hoge($(this).css(name)) === value }
    }
    $(this).filter(hogeFilter('backgroundColor', moge)).addClass('page');

    どちらにしろ、$.HogeをjQueryプラグインにする理由はないけどね。
    464 : Name_Not - 2014/06/11(水) 03:56:50.36 ID:???.net (-1,-29,-31)
    >>462
    複数回生成っていうのは、
    $('.hoge')のようなセレクタになっているものを一旦変数に入れるかどうかの話だよ。
    括弧の中が要素の場合は関係ない。
    465 : Name_Not - 2014/06/11(水) 03:58:51.56 ID:???.net (+4,-30,-40)
    >>462

    いや、そもそもこういうコードが
    怪しいって話だから。

    > if ($(this)~){
    > $(this).css~
    > }

    > $(this).filter $(this).css

    この二つのthisは同じものを
    指しているわけじゃないから話が違う。
    466 : Name_Not - 2014/06/11(水) 04:04:26.87 ID:???.net (+3,-30,-224)
    > この二つのthisは同じものを
    > 指しているわけじゃないから話が違う。

    もう少し詳しく説明すると、

      $(this).filter(hogeFilter('backgroundColor', moge)).addClass('page');

    このコードの$(this)は、ここではたまたまthisだけど、セレクタに変えられる。

    話を脱線すると

      $('span').filter(hogeFilter('backgroundColor', moge)).addClass('page');

    こうすると、全てのspanの中でbackgroundColorがmogeであるもの全てに
    pageクラスをつけることが可能。

    これは if で条件分岐していたときには、単数しか処理できなかったのに比べて
    jQuery風にセレクタに当てはまるもの全てを処理できるコードになってるわけ。

    で、話を戻して、二つのthisの違いだけど、

    $('span')はすべてのspanだけど、$(this).cssはfilterで呼ばれるから一つのspanになる。

    ね? 違うものでしょ?
    467 : Name_Not - 2014/06/11(水) 04:07:09.94 ID:???.net (+54,+26,-8)
    かっこいいな。ifがなくなっちまってる。
    これが関数型言語脳か~w
    468 : Name_Not - 2014/06/11(水) 04:53:25.17 ID:???.net (+3,-30,-160)
    そういう中身に関係のある条件ならいいけど、
    関係のないのでも filter使ってんの?

    たとえば、何かしらの条件でハンドラを付け外しする場合

    $('.foo').css('foobar', 'hoge');
    if (piyo == 3) {
     $('.foo').click(function () {});
    }
    $('.foo').mouseup(function () {});



    $('.foo').css('foobar', 'hoge')
    .filter(function () {
     return piyo == 3;
    })
    .click(function () {})
    .end()
    .mouseup(function () {});

    こんな感じか…
    469 : Name_Not - 2014/06/11(水) 05:13:03.33 ID:???.net (+63,+29,-60)
    >>461
    今度は「なっている理由がない」かよw
    プラグインにしたんじゃなくてそういうプラグインを使ってるだけなんだが
    なんでどこまでも頓珍漢なんだろうな
    470 : Name_Not - 2014/06/11(水) 05:31:33.71 ID:???.net (+57,+29,-10)
    filter使ったらすっきり書けました
    ありがとうございました
    (と良いところを素直に認めるのもA級プログラマーの重要な資質)
    471 : Name_Not - 2014/06/11(水) 05:56:47.37 ID:???.net (-1,-29,-34)
    更に気になるところをチョチョッと手直ししたら処理がすごく高速化しました
    ケチを付けて頂きありがとうございました(>_<)
    472 : Name_Not - 2014/06/11(水) 08:50:50.87 ID:???.net (+57,+29,-31)
    質問も回答も疑問をそのまま質問にすればいいだけなのに、なんで否定が先行するかなあ
    おおらかな気持ちをもってほしいね
    473 : Name_Not - 2014/06/11(水) 13:50:38.48 ID:???.net (+30,-29,-106)
    >>412
    IEなら、F12を押して、デバッグ実行してみ。
    それで、エラーになる部分を、前後を含めて書いて。
    IEのバージョンも書いて

    >オブジェクトでサポートされていない
    >プロパティまたはメソッドです
    IEのバージョンが古くて、その機能に対応していないのかも。
    IEをバージョンアップしたら?
    474 : Name_Not - 2014/06/11(水) 15:23:10.38 ID:???.net (+91,+29,-36)
    filterの考え方を導入するとlodashのメソッドチェーン途中で抜けられない問題も解決できそうな気が。
    スカラー値であってもコレクションのように扱ってフィルタする感じ?
    475 : Name_Not - 2014/06/11(水) 15:33:09.11 ID:???.net (+69,+29,-23)
    >>474
    その手があったか!
    ますますlodashの価値が高まるな
    476 : Name_Not - 2014/06/11(水) 18:20:50.38 ID:???.net (-1,-29,-13)
    スカラー値であってもコレクションとして扱って要素0ならエラーって感じで処理するのは
    MaybeモナドやOptional型とか云々…
    477 : Name_Not - 2014/06/11(水) 20:34:38.45 ID:???.net (+103,+29,-25)
    filterしたあとにfilterしてないものの集合を得るにはどうしたらいいですか?
    end()したら、フィルタ前に戻せますが、
    フィルタしてないものを得ようと思ったら再び全体にfilterをかけなくてはいけないのが
    クールじゃないです
    478 : Name_Not - 2014/06/11(水) 20:39:24.55 ID:???.net (+3,-29,-6)
    filter→filter→end
    ってやったらどの時点に戻るんだろ?
    479 : Name_Not - 2014/06/11(水) 20:46:32.22 ID:???.net (+99,+29,-1)
    >>477
    もうちょっとクールな日本語で説明たのむ
    480 : Name_Not - 2014/06/11(水) 21:23:57.73 ID:???.net (+0,-27,+0)
    >>478
    ひとつ目のfilterの後
    481 : Name_Not - 2014/06/11(水) 21:33:28.79 ID:???.net (+94,+29,-3)
    >>479
    アスペは黙って寝てろ
    482 : Name_Not - 2014/06/11(水) 21:37:46.62 ID:???.net (+70,+29,-12)
    >>481
    >フィルタしてないものを得ようと思ったら再び全体にfilterをかけなくてはいけない
    この行の意味が解らない
    483 : Name_Not - 2014/06/11(水) 21:41:48.70 ID:???.net (-1,-29,-16)
    A ⊂ Bの時 NOT Bをスマートに取得したいって事だろ
    484 : Name_Not - 2014/06/11(水) 22:00:28.56 ID:???.net (+39,-29,-53)
    if ~ else ~
    みたいなことをfilterを使ってしたいのです
    最初のfilterでif~は出来ますが、
    else~をするには、endで元に戻してからまた条件を逆にしたfilterをかけないといけなくて
    それがダサいのです
    485 : Name_Not - 2014/06/11(水) 22:01:12.09 ID:???.net (+0,-29,-12)
    else()があればいいんですが。
    486 : Name_Not - 2014/06/11(水) 22:10:09.43 ID:???.net (+57,+29,-52)
    filterをかけた時の元オブジェクトってどこに保存されてるんですかね?
    それが分かればそういうプラグインかけるのでは
    488 : Name_Not - 2014/06/11(水) 22:39:04.43 ID:???.net (+65,+29,+0)
    >>274,370,412,487
    懲りない人だね
    >>473
    489 : Name_Not - 2014/06/11(水) 22:39:27.92 ID:???.net (-1,-29,-16)
    pushStackというメソッドを使ってるようですね
    491 : Name_Not - 2014/06/11(水) 23:06:07.02 ID:???.net (+52,+29,-1)
    あなたに言ったのではありません
    492 : Name_Not - 2014/06/11(水) 23:49:58.07 ID:???.net (+2,-30,-40)
    >>485
    適当に作れば?

    $.fn.else = function(){
     var _this = this;
     return $($.grep(this.end(), function(n,i){
      return $.inArray(n, _this) == -1;
     }));
    }
    493 : Name_Not - 2014/06/11(水) 23:58:54.03 ID:???.net (+16,-30,+0)
    >>477
    > filterしたあとにfilterしてないものの集合を得るにはどうしたらいいですか?

    俺だったらこうするかな。

    var a = [], b = [];
    $('.foo').each(function() {
     if ($(this).なんとか) {
      a.push(this);
     } else {
      b.push(this);
     }
    });
    $(a).text(1);
    $(b).text(2);

    switchなどを使えば、3つ以上でも分割できる。

    jQueryプラグインを作るならばこういうのも出来なくはないけど、ちょっと見にくそうだ。
    $('.foo').filter2(
     function() { return $(this).なんとか; },
     function() { /* trueの時のjQueryuオブジェクト */ },
     function() { /* falseの時のjQueryuオブジェクト */ },
    );

    Deferredっぽく以下の様なコードも考えたけど、
    使う機会を考えると、作るまでもないかな。

    var obj = $('.foo').filter3(function() { return $(this).なんとか; });
    obj.trueCollection(function() { /* trueの時のjQueryuオブジェクト */ });
    obj.falseCollection(function() { /* falseの時のjQueryuオブジェクト */ });
    494 : Name_Not - 2014/06/12(木) 01:01:00.42 ID:???.net (+130,+29,-73)
    なんでみんな「filterしてないもの」=「filterで抽出されなかったもの」なんて理解できるんだ?
    おれは>>484の説明でやっと理解できたよ
    普通は「filterしてないもの」=「filterする前のもの」だろ?
    495 : Name_Not - 2014/06/12(木) 01:04:18.66 ID:???.net (+71,+29,-10)
    >>494
    2行目でする前の物の話してるんだから
    消去法で分かるだろ
    496 : Name_Not - 2014/06/12(木) 01:19:55.75 ID:???.net (+57,+29,-15)
    まさか「filterしてないもの」!=「filterする前のもの」なんて想像もできなかったわ
    みんな凄いな
    497 : Name_Not - 2014/06/12(木) 01:53:23.52 ID:???.net (-1,-29,-37)
    なんかtweetdeckでtweetdeck xssとかいうアラートが出たのですが
    大丈夫ですか?
    498 : Name_Not - 2014/06/12(木) 02:04:23.60 ID:???.net (+63,+27,+0)
    >>494
    お前がアスペなだけ
    499 : Name_Not - 2014/06/12(木) 02:07:33.71 ID:???.net (+0,-27,-22)
    XSSで勝手にRTされてました
    ログアウトしたらログインできなくなりました
    ツイートに含まれたスクリプトそのまま実行するってどんだけ
    500 : Name_Not - 2014/06/12(木) 10:59:58.38 ID:???.net (+52,+29,-5)
    ろーだっしゅってクソなんですか?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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