jQuery 質問スレッド vol.8
■ このスレッドは過去ログ倉庫に格納されています
JavaScriptでDOM用ライブラリであるjQueryのスレです。
次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
このスレはjQueryやjQuery UIの使い方やjQueryプラグインの作り方を質問するスレです。
jQueryを使って作る側のスレであって、こんなプラグインありませんか?と聞くスレではありません。
そういうのは自分で探してください。
ろくにサポートもされてなさそうな野良プラグインの使用はおすすめしません。
JavaScriptの質問は関連スレで質問して下さい。
■前スレ
jQuery 質問スレッド vol.7
https://mevius.5ch.net/test/read.cgi/hp/1478055094/
■関連スレ
JavaScript の質問用スレッド vol.130
https://mevius.5ch.net/test/read.cgi/hp/1501503056/
ECMAScript デス 6
https://mevius.5ch.net/test/read.cgi/tech/1483332914/
JavaScript ライブラリ総合質問所 vol.5
https://echo.5ch.net/test/read.cgi/hp/1465399470/ classの使い方違うと言われそうだがあえて質問。
<li id="i" class="hage hoge a1">
<li id="ro" class="hage hoge a2">
<li id="ha" class="hage a3">
〜
<li id="ni" class="hage hoge a9">
<li id="ho" class="hoge a10">
liの数は10個固定。順序は動的に入れ替わる。
上のidは適当につけたもので、これは動的に変わらず(変えず)。
hage hogeはあったりなかったり、a○はどれかの数字で必ずある
a○の1〜10の数は固定で他の数字が入ることはない。
a2←→a9など動的に入れ替わる。
で、任意の、例えば#roのa○のその時点での数字を取得するにはどうしたらいいでしょうか?
attributesで取得して正規表現で探すとか…は面倒だし無駄だし。
属性使えばattr()で簡単にできるがclassでできないものかと思いまして。 >>4
順序が入れ替わるのなら index() は無意味なので
className から取るしか無いと思う
var num = (elm) => elm.attr('class').match(/a\d+/)[0].replace(/a/, '');
console.log(num($('#ro'))); >>4
class名をデータのように扱うなら、data-*属性を使う実装に変える方がいいと思う
classでやるなら、classListから正規表現を使う
> attributesで取得して正規表現で探すとか…は面倒だし無駄だし。
そもそも、class名から数字を抽出する処理が無駄なわけでclass名を使うことがナンセンスかと 無駄ナンセンス、やはりそうですか。
data-は動的に変更した時点で即CSSと連動できましたっけ?
a○は
.a1 {}
.a2 {}
.a3 {}
というふうにCSSのためなのです。 >>5
こういう記述はまだ早いという人のほうが多いんじゃないかな
今のうちこれにしても数年後スタンダードになってるとも思えん >>7
[data-hoge=a1] {
}
で定義できるよ。 datasetをcssでも使うならjQueryの.data()以外で読み書きしないとだめだな 即連動できるかに対して定義できるよって
ajax見たいにキャッシュ無効にできて即DOM書き換えられればいのにな 11だが俺も書き方悪かった
ようは誤解招きかねない書き方だなと
ネイティブjsでも書き換え必要→なら最初からattrでいいんじゃね?→
data-でなくユーザ指定の属性はいいのか、と
これやっちゃってる人多いと思う >>8
かっこつけて先走りしたはいいが後で書き直すパターンかもな。
>>10
開発者?はなんでこんな設計にしてしまったのだろう。
これでしかできなかったのかね。 無難に独自属性attr()でやる(すでにやってる)ことにします。ありがとう。 jQueryはCSSは相性いいが、jsとCSSはいまいちだな
オブジェクト(連想配列)がCSSのプロパティと連動できれば最高なんだが DOMではCSSは取得出来ないからな
相性どころか次元が違う もう入り始めてるけどCSS Typed OMで記述は長くなるかもしれないが
ロジック的にきれいに書ける document.styleSheets すら参照できないjQueryとDOMを比較するのもどうかと思った document.styleSheetsを引き合いに出すのはちょっとね
DOM APIでもdocument.styleSheetsを弄るのは最終手段で気持ちの悪いことだし そうかね
俺はインラインスタイルを多用するコードの方が気持ち悪く感じるな まあ、classやattributeでスタイルを書き換えるのがメインだから、setterとしての.css()には魅力を感じないというのはある >>16
言うまでもないがjQueryはセレクタが便利
jsのノード取得ももっと拡張するとか >>15がいっているのはこういうことだろうが、
jQuery(element).css({color: 'black', 'background-color': 'white'});
classでやれることをインラインスタイルで代替する事はまずない
インラインスタイルや!importantは基本避けるべき技術だな だなって、インラインスタイルや!importantが出てくる意味がわからん (attr()で属性変える=CSSも変わる)
(オブジェクト変える≠CSSも変わる)
だな .css()がインラインスタイルを書き換えている事を知らないんだろう
jQueryしか触ってないからDOMの基本も分かってない 26だがインスペクタも見てるから嫌でも気がついてますが >>25
>>15がいっているのはこういうことだろうが、
残念ですが違います >>28
そういう意味じゃないだろ?
DOMオブジェクトの要素からCSSが取得できないってことだろw
お前こそ基本が分かっていない オブジェクト変えるでcss()だけしか出てこなかったのかね >>33
「CSSが取得できない」が抽象的すぎて何をいってるのか、さっぱり分からん
もっと、具体的に書いてくれ ■ このスレッドは過去ログ倉庫に格納されています