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/ ここは質問スレ
これだけヒントを出して貰っていればで十分だろ?
というか、ちょっと検索すれば学習できることだが >>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; } >>753
それは典型的ダメパターン
再読み込みで前の状態が残る場合がある 加えて言うと、checkedは一応記述しておくがな
それと変更をどうするかなので全く答えになってない >>752
単語はわかりわすく書き換えたまでです。
>showに相当するものは、display: block等だし
>hideにそうとするものは、display: noneなのだから
承知です。途中overflowが入ることも。 >>754
> 再読み込みで前の状態が残る場合がある
なんで残ったらダメんだよ?
ブラウザでバッグしても残るだろうが は?何言ってるんだコイツ
ダメに決まってるだろ
初期化の意味なし >>758
> ダメに決まってるだろ
お前が決めただけだろ?
ページ内のある範囲や部品を表示・非表示っていうのは
例えばショップの商品絞込機能と同じなわけだが、
リロードしても今絞り込んでる条件なんか変わらねーよ 残るか残らないかって確実に決まるんだっけ?
リロードで確実に残したいものはちゃんとルーティングするかなぁ >>761
httpヘッダなどでも決まるよ。
基本ブラウザで制御させる部分だから自分で(JavaScript)で
制御するのはやめてブラウザに任せたほうが良い。
一番ダメなのはフォームとフォームでない部分を混ぜること
独自のチェックボックス風のものをJavaScriptで自作とかしたりしてね。
そうすると画面の見た目とJavaScriptの処理結果がずれることになる。
なんでだーといいながら、ページ表示時にJavaScriptで値を入れたり
ページの進むと戻るしたときにおかしくなって、
setTimeoutとかで強制的に再描画とかして泥沼に陥ることになるw
こういうのは状態の保持にフォームを使わないから。そしてフォームの値で
見た目をCSSで変更させないから。
一部にJavaScriptを使ったとしても、input type=hiddenなどを使って、
状態の保持にフォームを利用しておけば、確実にブラウザの挙動に
従わせることができるので、シンプルに実装することができる。
JavaScriptも使わずに実装できるので、フォームの値と画面の見た目がずれることもない。 それからフォームの内容をリセットしなければ、
まさにフォームのリセット機能が存在するので
( input type="reset" or form.reset() )
実は画面のリロード時に確実にフォームをリセットするのも
フォームを使っていたほうが簡単だったりする。 >>759
> 答えてるほうがレベル低いって・・・
ゴメンな答えるほうがレベル高くてw 一つ言い忘れていた。
> 残るか残らないかって確実に決まるんだっけ?
の話だけど、これは要するに
HTMLを修正した時、更新ボタンで画面に変更が反映されるか?
と同じ話なんだよ。
つまりキャッシュ。ブラウザの設定にもよるけど通常は
キャッシュが有効に使われる状態であれば、更新ボタンを
おしても前の画面は変更されないだろう?
ならばフォームの値もそのままなのは当然のこと。
そしてスーパーリロードだとキャッシュが使われる状態でも
リロードされる。フォームの値もリセットだ。
つまり更新を押してもフォームの値が残るっていうのは
バグでも何でも無く、ブラウザの機能なわけさ。 >>749
success, complete は、古いのかな?
今は、done, fail とか。
ヌーのサイトの情報は、古いから、気を付けな
// 全体の設定
$.ajaxSetup({
data: {format: 'xml'},
timeout: 60 * 1000
});
$.ajax( url )
.done(function( data, textStatus, jqXHR ) { })
.fail(function( jqXHR, textStatus, errorThrown ) { }); >>761
初期値はブラウザによって不確定だからタチ悪い
よってCSSかJSでイニシャライズが必要
で、問題は変更の方法だろ
CSSでdisplay:none;としておきたいとこだがaddClassだと!important使わないと、
またshow()の類でないと、ってとこがミソなんだよな フォームのリセットはリセットすればいいだけだから別によかろう。
クラスの付け方と変え方をどうしてる?って話なのにな。 form操作により、と書きましたがそれ以外に関連したりしなかったりで表示・非表示があります。
よって再表示で
>制御するのはやめてブラウザに任せたほうが良い。
>再読み込みで前の状態が残る
は困る部分もあります。formとは分けてます。後だしですみません。
>独自のチェックボックス風のものをJavaScriptで自作
そんなことはしてません。一応。 >>767
> 初期値はブラウザによって不確定だからタチ悪い
それを言ったら進むや戻るを押したときだって
ブラウザ依存なんだが。
不確定なんじゃなくて、キャッシュが使われると言うべき。
キャッシュはブラウザの設定でユーザビリティ向上のために
使われるものなので、それを無効にする方向じゃなくて
活かす方向で作るべきだよ >>769
> は困る部分もあります。
そもそも困る作り方なのが悪い。
>>770でも書いたが、例えばブラウザの設定で
キャッシュを出来る限り使う設定にしていれば
JavaScriptの状態が保存されることも有る。
保存されないことも有る。
そういったことを制御するのは大変。
今回の話でいえば単にリロードしても状態は残る
(正確に言えばブラウザの設定にもよる)わけだが
それで困ることはないだろ。通常はリロードしても
フォーム内容は維持されるものなんだから >>767
> CSSでdisplay:none;としておきたいとこだがaddClassだと!important使わないと、
> またshow()の類でないと、ってとこがミソなんだよな
!importantを使うのは作り方が悪い。
適切にaddClassを使えば、クラスを設定した時点で
もとの状態よりも優先順位の点数があがるので!importantなんか
使わずに作れる。
行き当たりばったりでスタイルを適用してるから
わけわからんくなるんだよ。 ■ このスレッドは過去ログ倉庫に格納されています