jQuery 質問スレッド vol.7 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
JavaScriptでDOM用ライブラリであるjQueryのスレです。 このスレはjQueryやjQuery UIの使い方やjQueryプラグインの作り方を質問するスレです。 jQueryを使って作る側のスレであって、こんなプラグインありませんか?と聞くスレではありません。 そういうのは自分で探してください。 ろくにサポートもされてなさそうな野良プラグインの使用はおすすめしません。 JavaScriptの質問は関連スレで質問して下さい。 ■前スレ + JavaScript & jQuery 質問用スレッド vol.6 + http://echo.2ch.net/test/read.cgi/hp/1465566635/ ■関連スレ + JavaScript の質問用スレッド vol.122 + http://echo.2ch.net/test/read.cgi/tech/1472426483/ + JavaScript(ECMAScript)質問用スレッド vol.122 + http://echo.2ch.net/test/read.cgi/tech/1472401404/ + JavaScript の質問用スレッド vol.131 + http://echo.2ch.net/test/read.cgi/hp/1478053599/ JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net http://echo.2ch.net/test/read.cgi/hp/1465399470/ + JavaScript & jQuery 質問用スレッド vol.6 + http://echo.2ch.net/test/read.cgi/hp/1465566635/ >>636-637 詳しくありがとうございます。 $(this)としていたのは、ID名をどうやって取得するのか?と思ったもので。 それで var id = $(this).attr('id'); こういう書き方自体は間違いではないのかな?っと。 var id = this.attr('id'); こういう書き方の方が良いんですかね。 >>638 この場合はthisでええんやで$()は不要 通常のDOMオブジェクトではなくてjQueryオブジェクトで参照されるから >>639 わかりました。ありがとうございます。 引き続き勉強していきたいと思います。 >>629 どうにでもできるし、楽さはどれもさほど変わらない 自分がどうしたいかだけで毎回取得したいならそうすればいい 常に最新データを求めるならそうすべきで、その必要がないのなら冗長 サーバサイドならPHPの方が楽だしセキュリティ上有利 tableタグでクリックされた要素の次に来る要素をセレクタとする場合、 trをまたいでいる場合の簡単な指定方法はありますか? ↓でthをクリックしたらtdを選ぶ。としたいです。 <table> <tr> <th>...</th> </tr> <td>...</td> <tr> </tr> </table> > クリックされた要素の次に来る要素をセレクタとする場合、 セレクタってなんですか? >>642 tdの位置が明らかに文法違反 セレクタ云々も用語の不理解が見られる >>621 と同じ指摘をする必要がありそうどな >>642 >>644 のいうように文法おかしいけど tableを起点で参照 $(this).closest('table').find('td'); 親のtrから参照 $(this).closest('tr').next('tr').find('td'); >>645 素晴らしいセレクタありがとうございます。 jQuery APIの事をセレクタと表現してるのか セレクタの意味を調べ直すべきだな >>642 HTMLはjQueryより難しいからな よく見直せ >>639 便乗質問なのですが、$(・・・)のいらないthisだけでいい「この場合」とはどういう場合をさすのでしょうか? >>651 jQuery.prototype 上の関数の場合 >>653 jQuery.prototype.functionName jQuery.fn.functionName わざと難しくしてるか説明できないか いずれにしろ性格悪いのは間違いなさそう $.fn.myMethod = function() { console.log(Object.getPrototypeOf(this)); }; くだらないことやってんなw 俺が終わらせてやるよ。 >>651 JavaやC#のクラスベースと呼ばれるオブジェクト指向の thisはクラスのインスタンス自身と明確に決まってる。 だけどJavaScriptの場合そうとは限らない。 thisは呼び出し方で決まる。 obj.foo() と呼び出せば、fooの中でthisはobjになるし、 obj.foo.call(data) と呼び出せば、fooの中でthisはdataになる つまり「この場合」とは "呼び出し側" の "呼び出し方" で決まる。 "呼び出され側" ではないことに注意な。 単純なライブラリであれば通常は、"呼び出し側" は俺らで書くことが多いが ライブラリのプラグイン用のような仕組みや、イベントハンドラでは、 "呼び出し側" はライブラリ側が担当し、俺らは "呼び出され側" を書くことになる。 その場合に、 "呼び出され側" でthisがどうなるかは "呼び出し側" のライブラリの仕様によるというわけだ 今回の「この場合」とはjQueryのプラグインの場合は、 thisが jQueryオブジェクトになるとjQueryの仕様で決まっている >>くだらないことやってんなw 俺が終わらせてやるよ。 www 本当に終わったな。 見事に別の話にすり替わっとるw どこにでも長々説明下手いるだろうに一々きにするなよ >>655 ,657 これが「煽っても無駄」というあれか 曖昧な質問にはヒントとなるキーワードやURLだけを返す そういう質問者は大抵、「質問した内容以上に基礎知識が身についてない」ので、詳しい説明は時間の無駄と考えるからだ (与えたヒントからそれなりに質問内容が絞り込んだ質問に発展するなら、その時にまた考えるがね) だから、質問が具体的かつ分からない箇所が十分に小さな範囲なら、より詳しく回答する 実際のところ、>>656 が十分なヒントを与えてくれていると思うけどな それでも分からないなら、prototypeチェーンでぐぐれ(To: >>651 ) console.log($.fn.jquery); console.log($().jquery); ここは質問スレ これだけヒントを出して貰っていればで十分だろ? というか、ちょっと検索すれば学習できることだが >>669 回りくどい $(・・・)の場合→ thisだけでいい場合→ それだけ >>675 それだけってお前何も書いてないやんw 重要なのは→の右側だろ ヒントは出ているが、それを理解する頭がないか、質問を具体化する頭がないか、のどちらか 自分がわかるから相手もわかると思ってるのだろうな 後輩やら持ったことないのだろう 本当に理解しようと思う人には十分答えになっている しかし、教えてくれくれ厨にはこのヒントはこたえるよな スマン抜けてた 「わかりやすく」答えられないのを濁してるのだろ 後輩と見知らぬ他人に教えるのでは全く状況が違うが、6>84は後輩に教えた経験があるのかね… 通常、後輩を教育する時には後輩の理解度を図る質問をしてから、基礎から段階を踏んで覚えさせる だから、>>651 のような曖昧な質問はさせないし、そんな質問が来たら説教ものだ >>653 の「難しい」も具体化出来てないから、質問として成り立ってない 基礎から質疑応答を繰り返して覚えさせるのは相当時間がかかるが、後で仕事で返して貰うための投資なのでそれはいい が、赤の他人にそこまでやる義理は全くない 「で、君はどこまで分かってるんだ?」「prototypeは分かるか?」「関数は分かるか?」「今まで何を学習した?」 そんなやりとりを繰り返して質問者を答えに導くのは、このスレの役目ではないと思うんだがね Object.getPrototypeOf(this); これを理解出来ない時点で何を説いても無駄 >>690 > だから、>>651 のような曖昧な質問はさせないし、そんな質問が来たら説教ものだ じゃあためにし、説教してみてよ? 自分で説教ものだっていったんだから 当然できるよね? お前のレスみてると、なんかお前の説教のレベルが低い気がするんでねw >>690 誰からも相手にされない基地外みたいな輩だな >>692 「赤の他人にそこまでする時間はない」とはっきりいわなければ伝わらないのか なぜ2chで家庭教師なみに一人の人に教えこまねばならんのだ 俺はそんな時間はないが、文句があるなら暇なあなたが説明すればいいんじゃないかね それとも、あなたは質問者本人なのか? >>695 伝わらないに決まってるだろ。 最初からそう言えや。 Q 「○○をするにはどうしたら良いですか?」 A 「赤の他人にそこまでする時間はない」 って答えてればいいだろ >>696 > 伝わらないに決まってるだろ。 「赤の他人にそこまでやる義理は全くない」をあなたが読み飛ばしただけ > Q 「○○をするにはどうしたら良いですか?」 > A 「赤の他人にそこまでする時間はない」 この書き方だと質問全般に回答しないように読めるが、質問者の理解度が分かる質問をすれば、答える 問題点を明確化しても内容を全く読まずに「回答しない」という都合が悪い事実だけを取り上げてあなたは煽ってるだけ 日本語の読解力を身に付ける事をお勧めする >>696 あと、繰り返すようだが、他人を煽り散らす暇があるなら、あなた自身が回答しろ 俺は回答しない理由を釈明したが、あなたは回答するべきだという あなたがそういうなら、他人任せにせず、あなた自身が解決に向かうように自分から働きかけるべきだ 質問をするのは勝手だけど思い通りの解答を期待するのは間違い ヒントでもレスくれるだけ有り難いと思いなさい >>658 質問者です。ありがとうございます、そして遅くなりすみません 「 "呼び出し側" のライブラリの仕様によるというわけだ」まではわかります インスタンスもなんとなくですが ただ$(・・・)有無、区別が曖昧というか理解度が浅いようです で、>>692 は質問者ではないです >>700 jQueryの話だろ? イベントハンドラ内のthisはDOM要素 ぐらいしか意識することはないぞ。 jQueryプラグインなんて普通書かないだろ? jQueryプラグインの場合はthisがjQueryオブジェクトってだけだ。 >>701 >jQueryの話だろ? そうです ネイティブjsも書きますがjQでの質問です >jQueryプラグインなんて普通書かないだろ? 書きません >>700 this は何を差すのか?それだけ バカ セレクタが従兄弟関係にあれば処理って無理? 特定のクラスがあって、親に遡り、その兄弟の子供に 処理を加えたい つまりイトコ。ググっても出てこないんだよな… >>707 兄弟 = $(特定のクラス).closest(親); 兄弟.children(); >>708 さん 納得行く結果に辿りつきましたありがとう( TДT) 2ちゃん住人最強( TДT) 自演を疑うやつは、だいたい劣等感が強くひがみ根性が強いやつ そういうやつは感謝された人間や、称賛を浴びた人間を目ざとく思う 事もあろうに素直に客観でみれず難癖をつけだす始末 なぜ、そう思うか?私がそうだからである 自分で盛り上げるネタもないやつが偉そうに 単発批判してんじゃねーぞカス IDつかないスレで自演とかナンセンスなこといってる愚かさに気づけよw 相変わらずここは・・ ヒント、回答とか言ってるわりにずれてるし 質問者のほうがレベル上では >>718 どうせお前このスレを荒らしに来ただけだろ? 数日間レスが止まってるところに、誰宛かも わからないこと書き込んで。ばればれ 似たようなオブジェクト2つを変える関数を作っています。 仮に2つは$('#hoge-L')と$('#hoge-R')とします。将来的に2つを超えることはありません。 実際は様々な処理をしていますがここでは説明のため色を変えるだけとします。 様々な処理と言ってもLとRの違いだけで関数内の他は同じコードで共通化しています。 実際は色を変える関数、○○を変える関数など多数あり、全てLとRを操作します。 LとRは、片方だけ変えることも両方変えることもあります。 LとRの変更色は同じ場合も違う場合もあります。 で、とりあえずは function changeColor(args,c){ $('#hoge-' + args).〜cに色変更; } changeColor('L',c1); としましたが両方変える場合 changeColor('R',c2); と2回呼び出さなくてはなりません。 これを1回呼び出しにしたいのですがどんな方法がいいでしょうか。 721の続き (1)配列渡し changeColor(['R',c2]); changeColor(['L',c1,'R',c2]); (2)引数を2つ分に固定しnull渡し changeColor(null,null,'R',c2]); (3)可変長引数 arguments使用 (4)(2)に加え部分適用 var pmL = function(L,c1){ return changeColor(L,c1,null,null); } pmL(L,c1); とRの分。関数やたら増えますが。 (5)名前付き引数 changeColor({L:c1,R:c2}); 最も自然な気がしますが引数が少ない今回の件でどうかと。 (6)その他 皆さんならどうしますか。 idなしかよ $('#hoge-'+args) じゃなくて $(arg) にして "#hoge-L,#hoge-R" を渡すってわけにはいかんのかね changeColorなどを実行するのに何かしらのイベントがあるとして >LとRは、片方だけ変えることも両方変えることも とのことだから、「LとRそれぞれ操作 or LとR同時に操作」に対応したイベント発火ボタン要素みたいなものが複数あるパターンとすると https://jsfiddle.net/wd8gzh70/ >>724 修正中だった? 割り込んでごめんw 俺ならこうする https://jsfiddle.net/wd8gzh70/3/ コード(処理)をごちゃごちゃ書きたくなく。 単なる定義(CSS)にすることでシンプルになる。 CSSが苦手な人は、CSSの量が増えるのが嫌だろうけどw で、こっちはCSSをSCSSに変えて短くしたもの https://jsfiddle.net/wd8gzh70/4/ >>721 LとRに両方に必ず同じものを適用するのでないなら 単純に二回呼び出したほうが良い。 そして>>723 を取り入れた方がいい。 そうすれば、両方とも同じなら一回でいい それから○○を変える関数とは全部CSSの内容か? どんな処理をしたいのかによるが>>726 を参考にJavaScriptから CSSを変えるのではなくクラス名を変えたほうが良いかもしれない。 で、色を変えるだけというかCSSで変えられる物だけなら、 changeColorなんて関数はいらないだろ? $('#hoge-L').css({color: 'red', fontSize: '1.5rem'}); $('#hoge-R').css({color: 'blue', fontSize: '2rem'}); とか二回呼び出して行えばいい 両方同じなら、 $('#hoge-L, #hoge-R').css({color: 'red', fontSize: '1.5rem'}); と書ける changeColorは例で、実際にはcssメソッド以外の関数も使うんだっていうのなら、 changeHogeHoge('#hoge-L, #hoge-R', パラメータ) とすればいいし jQueryプラグインにしてしまえば $('#hoge-L, #hoge-R').hogehoge(パラメータ) と書けるようにもできる。 CSSってCSSソース中のプロパティそのものを動的に変更できるのかな 例えば.hoge{color:#ff0000;}のCSSソースがあって javascriptでCSS.class.hoge.color=#00ff00みたいに >>728 それならjs一行で解決たな。 その程度ならjQueryよませる必要なし遅くなるだけだよ。 element.style.colorじゃなくCSS(仮).class.hoge.color できたら便利だけどさすがに無理か すみません、HTMLの情報が不足でした。その他不足と思われることの補足です。 単純化したイメージはこんな感じです。 <select id="left-color"> <option>red</option> <option>blue</option> 〜 </select> <select id="left-size"> <option>12</option> <option>14</option> 〜 </select> 他にも同様のselectがあり、左右同じ分あります。 各selectごとにchangeイベントで#hoge〜を操作しています。「○○を変える関数など多数」はこのことです。これが増える可能性は高いです。 各selectの発火は無視して最後に確定ボタンでという操作はこの件ではGUI上行っていません。 Lだけ、RだけなどのselectはGUI上作れません。読み替えということで参考にはなります。 LR両方変更の一例は全リセットをイメージしていただけるとわかりやすいかもしれません。 各関数の目的は見通し上おおまか1つにしています。 >"#hoge-L,#hoge-R"を渡す 発火したselectのidの一部を渡してるだけですのでそれでもいいです。 それとCSSは::after駆使して複雑な図形描くなどでなければ特に苦手ではないです。 >>727 >○○を変える関数とは全部CSSの内容か? 位置変更(jsで取得してjsで再設定)などもあります。初期位置はCSSですが動的に変更があります。 >changeColorなんて関数はいらないだろ? 他の部分数箇所から各関数の1つないし複数を呼び出しています。 >$('#hoge-L, #hoge-R').hogehoge(パラメータ) LRそれぞれのパラメータを全部連想配列にしてしまえば手っ取り早いですが、1つの変更だけで全部見るのも不自然さや速度面でどうかと今のようになっています(他にも理由あったような)。 2回呼び出しの頻度は各々呼び出しに比べれば少ないので前者でいいのかもしれませんね。 > LRそれぞれのパラメータを全部連想配列にしてしまえば手っ取り早いですが、 一番やってはいけないパターン 関数は「何をどうする」 「何を」をどうするか聞かれてるのに「どうする」をゴチャゴチャやってるのはなぜなのかな 引数の渡し方について質問者についていけてないのかな それ言ったら全てそうだ 選択問題なのにどれも答えてないな ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる