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

    私的良スレ書庫

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

    元スレjQuery 質問スレッド vol.8

    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
    201 : Name_Not - 2018/02/03(土) 11:21:44.57 ID:???.net (+68,+29,-5)
    >>193それは見てますよ
    それのどこが一つのclassになのでしょうか?
    202 : Name_Not - 2018/02/03(土) 11:24:28.33 ID:???.net (+76,+30,-76)
    >>199
    それ俺が書いたんだけど?

    質問者が面倒だって言ってるから、
    俺がclassに複数の異なった属性を入れるのがいけないと指摘した
    異なった属性を混ぜ込まなければclassにそんなに多くのものを入れることはない
    「一つの要素にJavaScriptからそんなに多くのクラスを
    設定する必要が有ることがそもそも間違ってる」
    最初から質問者に対してそう指摘している

    で、おまえは誰?何をやった?
    203 : Name_Not - 2018/02/03(土) 11:25:13.17 ID:???.net (+13,-29,-15)
    >>201
    > それのどこが一つのclassになのでしょうか?

    一つの要素にclass属性は"一つ"しかありませんよw
    data-*属性はいくつでも作れますがね
    204 : Name_Not - 2018/02/03(土) 11:33:17.27 ID:???.net (+50,-29,-88)
    >>203
    >>194に”複数の異なった属性を一つのclassに入れてしまう”と?

    ついでに質問いいすか?
    >>188はdataメソッドでなくattrメソッドで変えるということでしょうか?
    リセットするときどうするのでしょうか?
    もし各data-*ごとに消すならaddClassとさほど変わらない気がしますが
    205 : Name_Not - 2018/02/03(土) 11:36:45.23 ID:???.net (+57,+29,-2)
    ここで誰?ってw
    名前まで入れてるのにな
    206 : Name_Not - 2018/02/03(土) 11:40:50.91 ID:???.net (+68,+29,-21)
    それもだが上に出てたライブラリで勝手に~はどうするんだろうな
    むろんdata-*を否定するわけではないが
    207 : Name_Not - 2018/02/03(土) 12:11:07.34 ID:???.net (+115,+29,-20)
    >>188
    >>143で「変更の度にそこも付け加えなくてはならなくて面倒」とある。
    >>188でどう解決するのか。
    同じく聞きたい。
    208 : Name_Not - 2018/02/03(土) 12:31:43.55 ID:???.net (+78,-30,+0)
    >>204
    >>188はdataメソッドでなくattrメソッドで変えるということでしょうか?
    そう。attrメソッドで変える。

    そもそもdata-*は別にjQueryのdataメソッドのための属性というわけじゃない
    jQueryのdataメソッドが先に作られ、HTML5の仕様としてdata-*が作られた
    dataメソッドの初期値としてうまく整合性が取れそうだから統合されたが、
    もともと関係ないもので、data-*を属性として使うなら、attrメソッドを使う

    > もし各data-*ごとに消すならaddClassとさほど変わらない気がしますが

    値をグループ化できる。複数の値を週類ごとにまとめたものがグループ
    classの場合は値を書くしかないから3つのグループがあって、一つのグループごとに
    5個の値があれば、最大15個の値を管理する必要が出てくる
    data-*を使えば3つでいい(今は数が多くて管理が大変という話だというのを思い出そう)
    グループと値として管理できるのがメリット

    また値として排他であってもclassだと値の組み合わせが作れてしまう(例えば、class="black white red yellow")
    もちろんこの場合の動きとしては未定義でいいんだが、data-color="black" とかいう使い方なら
    他の値が同時に設定されていることを考えなくて済む

    >>206
    > それもだが上に出てたライブラリで勝手に~はどうするんだろうな
    ライブラリが勝手につけたものは無視すればいい。classという一つの属性を共用して
    使っているわけじゃないので、自分以外のことは考えなくて良い

    もちろんライブラリでもdata-*を使っていて名前がが被る可能性があるが、
    それはclassの値でも一緒の話だし名前の付け方を工夫すればよい
    209 : Name_Not - 2018/02/03(土) 12:34:14.77 ID:???.net (+84,+29,-153)
    >>207
    >>143で「変更の度にそこも付け加えなくてはならなくて面倒」とある。

    値は増えるが、グループが増えることは少ない

    それに加え

    グループが増えたとしても、既存のコードには影響が出ない

    classをつかっていると、既存のコードが参照しているclassに
    自分の知らない値が入ったぞ!ということになり
    それに対応するのが大変という話だが

    data-*だと、既存のコードが参照してないグループ(data-*属性)が
    追加されただけなので、既存のコードとは無関係となる
    210 : Name_Not - 2018/02/03(土) 12:54:54.71 ID:???.net (+33,-30,-206)
    もうちょっと具体的に話をする

    classに全部ぶち込むと、スペース区切りで複数の値を入れることになる。
    data-*であればそんなことをしなくて単体の値を指定できる。
    っていうことは、

    let resetValue = {
     "data-color": "white",
     "data-size": "M",
    }

    みたいに初期値を書けるってことだよ
    これがクラスだと

    let resetValue = {
     "white": true,
     "black": false,
     "red": false,
     "blue": false,
     "m": true,
     "l": false,
     "s": false,
     "ll": false,
     // それ以外の知らない値はそのまま変更しない(消してはいけない)
    }

    としなければいけなくなるということ
    そして、色やサイズのパターンが増えたらどうすんの?ということ

    ま、無理やりやろうとするなら、classの値に特殊な名前つけルールを作って
    そのルールを解釈して操作する関数を作るなんて "無駄なこと" をやればできるがねw
    whiteとではなくcolor-whiteみたいにプリフィックス付けて全部列挙して color- だと・・・無駄だなw
    211 : Name_Not - 2018/02/03(土) 13:11:48.31 ID:???.net (-2,-30,-34)
    ちなみに初期値に設定するのは
    $("#id").attr(resetValue)
    だけでいいで? attrはハッシュ値を受け付けるからよ
    212 : Name_Not - 2018/02/03(土) 13:25:20.80 ID:???.net (+86,+29,-27)
    >>208
    グループも何も静的1個(または2個)で済む方法がある>>140
    >>142のことはスッキリしない人がいるかもしれんだろうが>>141ならそれでいいんじゃね
    213 : Name_Not - 2018/02/03(土) 13:29:07.74 ID:???.net (+57,+29,-69)
    >>141の「ええよ」は、その一つ前のレスの質問者(>>140)へのレスであって
    >>142の問題があるけどどうする?に対する「ええよ」じゃないぞ?(時系列注意)
    214 : Name_Not - 2018/02/03(土) 13:36:55.41 ID:???.net (+62,+29,-82)
    というか、 >>142
    > それだと静的に付けたclassまで消えちゃうじゃん
    という指摘にたいして

    > そうなんだけど・・・の管理が面倒で
    > 変更の度にそこも付け加えなくてはならなくて
    > 最初つけるclassは1,2個と少ないので楽かなと

    って悩んだ挙句の妥協案じゃんw

    それからもっといい案(data-*)が出てるわけでしょ
    ほんと時系列注意なw
    215 : Name_Not - 2018/02/03(土) 13:57:15.50 ID:???.net (+85,+29,-25)
    んなこたわかってる
    そもそも>>140だって元々>>142の問題を承知で書いてる
    だからわざわざaaaを付け直してるんだろ
    216 : Name_Not - 2018/02/03(土) 13:59:01.33 ID:???.net (+51,+23,-1)
    だがdata-*を使ったもっといいやり方には
    気づいていなかった
    217 : 204 - 2018/02/03(土) 14:09:59.66 ID:???.net (+15,-29,-80)
    >>208
    おおまかわかりました、が
    >他の値が同時に設定されていることを考えなくて済む
    はclassでも同じことではないでしょうか?重複する変な付け方してなければ

    .aaa {color:}
    .bbb {size:}

    とした場合>>210
    >としなければいけなくなる
    の関連がよくわかりません
    218 : Name_Not - 2018/02/03(土) 14:18:56.48 ID:???.net (+91,+29,-3)
    もっといいやり方かどうかは質問者が決めること
    219 : Name_Not - 2018/02/03(土) 15:00:32.75 ID:???.net (+18,-30,-181)
    >>217
    classだとね、<span class="t-sharts red m">
    となっている時に、例えばラジオボタンの変更に従って
    Tシャツの色とサイズを変更したいって時に
    addClass("blue l") だけじゃだめでしょ?
    他の値(red m)が残ってしまうでしょ?という話だよ

    もちろんこれはバグなんだが、そもそもこうなってしまうのは
    classがスペース区切りで複数のクラスを入れるものであるというHTMLの仕様によるもの
    data-*だとその縛りがないので単一の値を入れるものとこっちで勝手に仕様を決められる

    <span class="t-sharts" data-color="red" data-size="m">
    とあるとき、attr({"data-color": "blue", "data-size", "l"}) とするだけでいい


    classでやろうとすると >>210みたいな色のリストを持たなければいけない
    その他の色やサイズのリストとその初期値をすべて持って置かないといけない
    220 : Name_Not - 2018/02/03(土) 15:01:56.65 ID:???.net (+103,+29,-16)
    >>218
    質問者 = 初心者 と仮定すると(この仮定は概ね正しい)
    初心者がいいやり方を決められる訳がない
    221 : Name_Not - 2018/02/03(土) 15:05:49.41 ID:???.net (+63,+30,-57)
    いいやり方は上級者が決める
    だがいいやり方は、簡単なやり方とは限らない
    いいやり方をするには技術が必要な場合があるからだ
    (スポーツとかに置き換えればわかるだろう)

    いいやり方をやるための技術力が初心者にはなく
    いいやり方を選択できないことも有る。
    だがこれは、やり方が良いか悪いかの話ではない

    初心者が決めたのは良いか悪いかではなく、
    いいやり方を自分がやるかどうかを決めただけ
    222 : Name_Not - 2018/02/03(土) 15:10:12.79 ID:???.net (+70,-30,-88)
    >>140の質問を要約すると、

    ・動的に追加されたclassの削除再追加を一括で行いたいが、
     $('.aaa').removeClass().addClass('aaa'); とするやり方は間違っていないでしょうか?

    この質問に対して「あり」以外に答えはない
    223 : Name_Not - 2018/02/03(土) 15:11:16.38 ID:???.net (+101,+30,-35)
    >>222
    「あり」が間違いなんて誰も言ってない
    もっといいやり方があるって話だ

    (9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
    224 : Name_Not - 2018/02/03(土) 15:15:36.54 ID:???.net (+71,+29,-8)
    >>223
    もっといいやり方がありますか?
    という質問は見当たらないけどw
    225 : Name_Not - 2018/02/03(土) 15:16:25.44 ID:???.net (+57,+29,-17)
    (9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
    226 : Name_Not - 2018/02/03(土) 15:24:28.07 ID:???.net (+57,+29,-17)
    ○○なことをしたいのですが、いいやり方はないでしょうか?

    この質問に対して「ある」「ない」以外に答えはない
    227 : Name_Not - 2018/02/03(土) 15:27:50.87 ID:???.net (+57,+29,-16)
    その寄せられた「意見」に対して「不評な意見」が出てるんだよw
    228 : Name_Not - 2018/02/03(土) 15:30:26.68 ID:???.net (+57,+29,-9)
    「不評な意見」かどうかは質問者が決めること
    229 : Name_Not - 2018/02/03(土) 15:38:00.81 ID:???.net (+57,+29,-11)
    どうして「不評な意見」が出るのか?
    ズバリこれねw
    230 : Name_Not - 2018/02/03(土) 18:55:50.02 ID:???.net (+71,+29,-1)
    >>220
    いや、218はここで他の人が言ってたことだが
    231 : Name_Not - 2018/02/03(土) 19:20:28.93 ID:???.net (+4,-30,-142)
    >>219
    removeClass()が不要というのはわかるが
    他の値(red m)が残っていい場合と、残ってはいけない場合と、その時々による
    今回は残ってはいけないとは言ってないが残したくない様子は伺える

    <span class="t-sharts" data-color="red" data-size="m" data-material="silk">
    の場合結局
    attr({"data-color": "blue", "data-size", "l", "data-material". "cotton"})
    としないとsilkが残るので同じじゃね?

    それとライブラリなど自分でコントロールできないclassも消したい場合
    removeClass()のほうが楽に消せるし手っ取り早い
    232 : Name_Not - 2018/02/03(土) 19:34:38.86 ID:???.net (+1,-29,-68)
    要は静的に付けたclassは変更しないようにしたいということだから
    意図する要素にだけ id でも data でも 静的に付けて於けばどうでもいい事
    classでやりたいなら個人の勝手
    $(el).removeClass().addClass() は単なるメソッドチェーンなんだから否定するのはおかしい
    ただの主観に過ぎない
    233 : Name_Not - 2018/02/03(土) 19:53:19.81 ID:???.net (+57,+29,-4)
    苦しいなぁw 頑張ればできると言ってるだけで
    やりづらいだけじゃねーか
    234 : 204 - 2018/02/03(土) 20:37:15.05 ID:???.net (+9,-29,-50)
    >>219
    詳しくありがとう
    でもdata-○○○の○○○は持つ必要があるし(たぶん)
    >しなければいけなくなる
    理由がいまいちピンときません

    それとdata-*でtoggleClassしたい場合どうするのでしょうか?
    235 : 204 - 2018/02/03(土) 20:38:42.01 ID:???.net (-6,-29,-1)
    hasClassもお願いします
    236 : Name_Not - 2018/02/03(土) 20:39:38.30 ID:???.net (+0,-29,-5)
    >>234
    toggleClass使いたいならclass使えば良いんじゃね?
    238 : Name_Not - 2018/02/05(月) 12:23:20.23 ID:???.net (+9,-30,-36)
    239 : Name_Not - 2018/02/06(火) 00:03:02.57 ID:???.net (+4,-30,-16)
    >>238
    このタイミングでそういうレスをした意図がわからないが、
    一応言っておくと今回の話題ににはそれが使えない

    class="a foo" やclass="a bar" とあるとき、 一発で
    class="a baz" にすることはできないから
    240 : Name_Not - 2018/02/07(水) 07:50:22.73 ID:???.net (+50,+22,-14)
    HTML で、使えるタグ名・属性名は、決まっているだろ

    タグ名の所に、そのタグ内で使える、属性名が書いてあるはず
    241 : Name_Not - 2018/02/07(水) 08:28:25.69 ID:???.net (+41,+7,+0)
    そもそもdata属性の使い方を勘違い
    242 : Name_Not - 2018/02/07(水) 23:21:56.08 ID:???.net (-7,-30,-191)
    >>241
    どういうこと?

    理由を書いてないから推測するしかないが

    1. data-*属性は使ってはならない
     → 使ってもらうために仕様が存在する

    2. CSSは属性でスタイルを適用してはいない
     → 適用していいから属性セレクタが存在する

    3. data-*属性は値を入れるだけ。CSSの属性セレクタの対象としてはいけない
     → そんなことはどこにも書いてない

    4. data-*属性はJavaScriptから読み書きしてはいけない
     → JavaScriptから使わないで何に使うの?CSS用途だけっていいたいの?

    5. jQueryではdata-*属性ははdataから使わなければいけない
     → DOM APIのgetAttributesつかってOKなんだから同等のjQueryのattrもOK
    243 : Name_Not - 2018/02/08(木) 08:23:18.25 ID:???.net (+91,+29,-18)
    >>242
    data属性(カスタム属性)を使うのはその人の勝手
    classで用が足せることで本人がそうしたいならその人の勝手
    何も間違ってはいないだろ?
    244 : Name_Not - 2018/02/09(金) 13:03:26.98 ID:???.net (+3,-30,+0)
    >>242
    //css
    div[data-hoge="before"]{ background-color: gray; }
    div[data-hoge="after"]{ background-color: orange; }
    //html
    <div data-hoge="before">あいうえお</div>
    <input type="button" id="btn" value="cosole" />
    //js
    $('#btn').on('click', function () {
    console.log("静的な値をdata('hoge')で取得: ", $('div').data('hoge'));
    console.log("動的に値をattr('data-hoge', 'after')に変更する");
    $('div').attr("data-hoge", "after");
    console.log("動的に変更した値をdata('hoge')で取得: ", $('div').data('hoge'));
    console.log("動的に変更した値をattr('data-hoge')で取得: ", $('div').attr('data-hoge'));
    });

    data()で参照するとキャッシュされた値を出してくるので動的に変更する場合は注意が必要
    attr('data-*')で参照すれば問題はないけどね
    245 : Name_Not - 2018/02/09(金) 19:48:01.38 ID:???.net (+59,+29,-9)
    なにそのくそ仕様誰得なの?
    246 : Name_Not - 2018/02/10(土) 21:24:34.36 ID:???.net (+6,-29,-9)
    htmlはdata-*で、jqならattrだけでいいんだろ?>>208が言うには
    247 : Name_Not - 2018/02/10(土) 21:59:45.85 ID:???.net (+55,-30,-92)
    $(el).attr('style', 'color: red; background-color: black;');
    なんて面倒なことやらないだろ?
    $(el).css({'color': 'red', 'background-color': 'black'});
    こうするだろ?

    何のためにjQuery使ってんの?ってこと
    248 : Name_Not - 2018/02/10(土) 22:28:13.43 ID:???.net (+57,+22,+2)
    >>243
    正論
    249 : Name_Not - 2018/02/10(土) 23:46:25.77 ID:???.net (+62,+29,-17)
    >>247
    それ好きにすりゃいいレベルの例じゃね?
    こんなんまでこっちはまちがいーこっちにしろーとか押し付けられんの?w
    250 : Name_Not - 2018/02/11(日) 02:21:47.96 ID:???.net (+3,-30,-152)
    http://w3techs.com/technologies/overview/javascript_library/all

    w3techsによると2017年1月の時点で71.9%のサイトが
    JavaScriptのライブラリとしてjQueryを使用していることが判明したが
    それから1年たった2018年1月現在、73.2%に1.4%も増えていることが判明した。

    またAngularは0.5%、だがReactが伸びてきており0.5%
    とAngularを逆転したことがわかる

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

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


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