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/ >>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それぞれのパラメータを全部連想配列にしてしまえば手っ取り早いですが、
一番やってはいけないパターン 関数は「何をどうする」
「何を」をどうするか聞かれてるのに「どうする」をゴチャゴチャやってるのはなぜなのかな
引数の渡し方について質問者についていけてないのかな それ言ったら全てそうだ
選択問題なのにどれも答えてないな 煽りばかりですな
以降は例外無く口出ししたくなる基地外のターン↓ 質問者>>>回答者
いつも通りw
質問文読んでないし可変長引数とか意味わからないんじゃね 質問を熟読した>>742さんが回答してくれるそうですワクテカ ぶっちゃけどれも似たり寄ったり
(4)はfunctionが増えて利点はないだろう
それより>>735の回答はどうなった? うむ、ここでは説明のため色を変えるだけとしますと書いてるんだから
渡した先のことはさほど書く必要ないんだよな
相手はそれくらいわかるだろ TVで報道されない真実
集計マシーン ムサシ
作ってる会社は?
wwww
一番触れられたくない部分www 税金垂れ流しで身内がばぶってる糞安倍特需 boxsliderについて質問です。
すでにsliderが設定されてる画像データがあります。
タブは6つで、それぞれにsliderが設定されてる画像データがあります。
そこに
ajaxで取得してきた新たなデータをおきかえて表示したいです。
1つめのタブはちゃんと表示されましたが、
後ろに隠れているタブのデータが表示されません。
この場合何か再設定をしないといけなかったりするのでしょうか? jQuery プラグインの、bxSlider でも使えば?
【jQuery】超簡単jQueryスライダー[bxSlider]の使い方
http://on-ze.com/archives/1658 ajax通信について教えてください。
以下のスクリプトを組んでいるのですが、通信が完了しているにも関わらず、
completeのalertが実行されません。
<スクリプト>
$.ajax({
(略)
success: function(data) {
$('#result').html(data);
(略)
complete: function() {
alert("終了");
}
サーブレット側では、
response.getWriter().write("完了しました。");
にてメッセージを送信し、jsp側のdivである#resultにて表示がされているので
通信は正常に行われていると思います。
しかし、completeが実行されていないということは、サーブレットからの
メッセージを受信した状態であっても通信が完了していないと
みなさえれているということでしょうか。
原因がわからず、困っております。
宜しくお願いします。 webサイトで記事ではなく図のあるページ。
ユーザーがform操作によりページ内のある範囲や部品を表示・非表示。
その方法の区別や使い方で質問です。
(1)CSSに初期値を持たせる
SS…#hoge {display: none;}
JS…$('#hoge').show()、〜.hide();
(2)JSに初期値を持たせる
SS….hide {display: none;}
JS…$('#hoge').addClass('hide')、〜.removeClass('hide')
(3)HTTMLに初期値を持たせる
HTML…<〜 class="hide">
JS…$('#hoge').addClass('hide')、〜.removeClass('hide')
(2)でデフォが非表示の場合、ページ読み込み時の見た目悪いので下の方や小さい部品が主です。
みなさんはどれかに統一?
併用の場合その区別の仕方(○○の場合は(1)など)教えてください。 show と hide という単語は使わない。
メソッド名、クラス名、両方の意味でだ
showに相当するものは、display: block等だし
hideにそうとするものは、display: noneなのだから
メソッド名やクラス名にshowやhideを使う必要はない
JavaScriptでは "状態" で考えろ
JavaScriptは状態(クラス)を変えるだけだ
CSSではある状態で、表示するかどうかを書くだけだ 初期値は、チェックボックスであればcheckedで指定できるだろ
<input type="checkbox" class="parts" value="show" >
<input type="checkbox" class="parts" value="hide" checked>
この値で表示非表示を決めるのだからJavaScriptはいらんわな
.parts[value="show"] { display: block; }
.parts[value="hide"] { display: none; } ■ このスレッドは過去ログ倉庫に格納されています