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

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

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

    201 = :

    >>193それは見てますよ
    それのどこが一つのclassになのでしょうか?

    202 = :

    >>199
    それ俺が書いたんだけど?

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

    で、おまえは誰?何をやった?

    203 = :

    >>201
    > それのどこが一つのclassになのでしょうか?

    一つの要素にclass属性は"一つ"しかありませんよw
    data-*属性はいくつでも作れますがね

    204 = :

    >>203
    >>194に”複数の異なった属性を一つのclassに入れてしまう”と?

    ついでに質問いいすか?
    >>188はdataメソッドでなくattrメソッドで変えるということでしょうか?
    リセットするときどうするのでしょうか?
    もし各data-*ごとに消すならaddClassとさほど変わらない気がしますが

    205 = :

    ここで誰?ってw
    名前まで入れてるのにな

    206 = :

    それもだが上に出てたライブラリで勝手に~はどうするんだろうな
    むろんdata-*を否定するわけではないが

    207 = :

    >>188
    >>143で「変更の度にそこも付け加えなくてはならなくて面倒」とある。
    >>188でどう解決するのか。
    同じく聞きたい。

    208 = :

    >>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 = :

    >>207
    >>143で「変更の度にそこも付け加えなくてはならなくて面倒」とある。

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

    それに加え

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

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

    data-*だと、既存のコードが参照してないグループ(data-*属性)が
    追加されただけなので、既存のコードとは無関係となる

    210 = :

    もうちょっと具体的に話をする

    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

    212 = :

    >>208
    グループも何も静的1個(または2個)で済む方法がある>>140
    >>142のことはスッキリしない人がいるかもしれんだろうが>>141ならそれでいいんじゃね

    213 = :

    >>141の「ええよ」は、その一つ前のレスの質問者(>>140)へのレスであって
    >>142の問題があるけどどうする?に対する「ええよ」じゃないぞ?(時系列注意)

    214 = :

    というか、 >>142
    > それだと静的に付けたclassまで消えちゃうじゃん
    という指摘にたいして

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

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

    それからもっといい案(data-*)が出てるわけでしょ
    ほんと時系列注意なw

    215 = :

    んなこたわかってる
    そもそも>>140だって元々>>142の問題を承知で書いてる
    だからわざわざaaaを付け直してるんだろ

    216 = :

    だがdata-*を使ったもっといいやり方には
    気づいていなかった

    217 = :

    >>208
    おおまかわかりました、が
    >他の値が同時に設定されていることを考えなくて済む
    はclassでも同じことではないでしょうか?重複する変な付け方してなければ

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

    とした場合>>210
    >としなければいけなくなる
    の関連がよくわかりません

    218 = :

    もっといいやり方かどうかは質問者が決めること

    219 = :

    >>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 = :

    >>218
    質問者 = 初心者 と仮定すると(この仮定は概ね正しい)
    初心者がいいやり方を決められる訳がない

    221 = :

    いいやり方は上級者が決める
    だがいいやり方は、簡単なやり方とは限らない
    いいやり方をするには技術が必要な場合があるからだ
    (スポーツとかに置き換えればわかるだろう)

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

    初心者が決めたのは良いか悪いかではなく、
    いいやり方を自分がやるかどうかを決めただけ

    222 = :

    >>140の質問を要約すると、

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

    この質問に対して「あり」以外に答えはない

    223 = :

    >>222
    「あり」が間違いなんて誰も言ってない
    もっといいやり方があるって話だ

    (9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

    224 = :

    >>223
    もっといいやり方がありますか?
    という質問は見当たらないけどw

    225 = :

    (9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

    226 = :

    ○○なことをしたいのですが、いいやり方はないでしょうか?

    この質問に対して「ある」「ない」以外に答えはない

    227 = :

    その寄せられた「意見」に対して「不評な意見」が出てるんだよw

    228 = :

    「不評な意見」かどうかは質問者が決めること

    229 = :

    どうして「不評な意見」が出るのか?
    ズバリこれねw

    230 = :

    >>220
    いや、218はここで他の人が言ってたことだが

    231 = :

    >>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 = :

    要は静的に付けたclassは変更しないようにしたいということだから
    意図する要素にだけ id でも data でも 静的に付けて於けばどうでもいい事
    classでやりたいなら個人の勝手
    $(el).removeClass().addClass() は単なるメソッドチェーンなんだから否定するのはおかしい
    ただの主観に過ぎない

    233 = :

    苦しいなぁw 頑張ればできると言ってるだけで
    やりづらいだけじゃねーか

    234 = :

    >>219
    詳しくありがとう
    でもdata-○○○の○○○は持つ必要があるし(たぶん)
    >しなければいけなくなる
    理由がいまいちピンときません

    それとdata-*でtoggleClassしたい場合どうするのでしょうか?

    238 = :

    http://blog.jquery.com/2018/01/19/jquery-3-3-0-a-fragrant-bouquet-of-deprecations-and-is-that-a-new-feature/

    jQuery(elem).addClass([
    'dave', 'micha?',
    'oleg', 'richard',
    'jason', 'timmy'
    ]);

    http://github.com/jquery/jquery/issues/3532

    239 = :

    >>238
    このタイミングでそういうレスをした意図がわからないが、
    一応言っておくと今回の話題ににはそれが使えない

    class="a foo" やclass="a bar" とあるとき、 一発で
    class="a baz" にすることはできないから

    240 = :

    HTML で、使えるタグ名・属性名は、決まっているだろ

    タグ名の所に、そのタグ内で使える、属性名が書いてあるはず

    241 = :

    そもそもdata属性の使い方を勘違い

    243 = :

    >>242
    data属性(カスタム属性)を使うのはその人の勝手
    classで用が足せることで本人がそうしたいならその人の勝手
    何も間違ってはいないだろ?

    244 = :

    >>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 = :

    なにそのくそ仕様誰得なの?

    246 = :

    htmlはdata-*で、jqならattrだけでいいんだろ?>>208が言うには

    247 = :

    $(el).attr('style', 'color: red; background-color: black;');
    なんて面倒なことやらないだろ?
    $(el).css({'color': 'red', 'background-color': 'black'});
    こうするだろ?

    何のためにjQuery使ってんの?ってこと

    248 = :

    >>243
    正論

    249 = :

    >>247
    それ好きにすりゃいいレベルの例じゃね?
    こんなんまでこっちはまちがいーこっちにしろーとか押し付けられんの?w


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

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


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