私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレJavaScript ライブラリ総合質問所 vol.4
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
JavaScriptライブラリ を自ら学ぶ人のための質問スレッドです。
■質問を書く上で
(1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合はhttp://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【ライブラリ】使用しているライブラリ名を記入してください。(ex: jQuery)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■質問を書く上で
(1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合はhttp://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【ライブラリ】使用しているライブラリ名を記入してください。(ex: jQuery)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■前スレ
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
■関連スレ
+ JavaScript の質問用スレッド vol.115 +
http://toro.2ch.net/test/read.cgi/hp/1399072595/
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
JavaScript Tips コレクション
http://toro.2ch.net/test/read.cgi/hp/1070611524/
1行javascriptプログラミング
http://toro.2ch.net/test/read.cgi/hp/1066750037/
【node.js】サーバサイドjavascript 2【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1358937029/
■各種ライブラリ
jQuery API Documentation
http://api.jquery.com/
jQuery Mobile API Documentation
http://api.jquerymobile.com/
prototype.js
http://prototypejs.org/
API Docs - YUI Library
http://yuilibrary.com/yui/docs/api/
Underscore.js
http://underscorejs.org/
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
■関連スレ
+ JavaScript の質問用スレッド vol.115 +
http://toro.2ch.net/test/read.cgi/hp/1399072595/
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
JavaScript Tips コレクション
http://toro.2ch.net/test/read.cgi/hp/1070611524/
1行javascriptプログラミング
http://toro.2ch.net/test/read.cgi/hp/1066750037/
【node.js】サーバサイドjavascript 2【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1358937029/
■各種ライブラリ
jQuery API Documentation
http://api.jquery.com/
jQuery Mobile API Documentation
http://api.jquerymobile.com/
prototype.js
http://prototypejs.org/
API Docs - YUI Library
http://yuilibrary.com/yui/docs/api/
Underscore.js
http://underscorejs.org/
>>5
ついでにいうと toArray() も不要
ついでにいうと toArray() も不要
nikkeiモバイルにアクセスしたら、
「データベースサイズを増やしますか」って聞かれたんだけど
http://news.mynavi.jp/articles/2013/06/03/iphone_why67/
これはLocalStorageを5MBから10MBに拡張できるってことだよね?
これをJS上で明示的にユーザーに問い合わせるにはどうすればいいんでしょう?
「データベースサイズを増やしますか」って聞かれたんだけど
http://news.mynavi.jp/articles/2013/06/03/iphone_why67/
これはLocalStorageを5MBから10MBに拡張できるってことだよね?
これをJS上で明示的にユーザーに問い合わせるにはどうすればいいんでしょう?
jQueryで$('.class名')と指定するのは
推奨されないと聞いた事あるのですが、
要素が同じ場合は、$('要素名').filter('.class名')と書けばよいですか?
推奨されないと聞いた事あるのですが、
要素が同じ場合は、$('要素名').filter('.class名')と書けばよいですか?
>>12
ブラウザ個別の機能では?例えば Chrome API の storage では容量を変えられる。
ブラウザ個別の機能では?例えば Chrome API の storage では容量を変えられる。
>>13
そんなAPIがあるんですね。ありがとうございます。
そんなAPIがあるんですね。ありがとうございます。
bootstrapでpopoverがmousedownのタイミングで閉じてほしいのですが
どうすればいいですか?
どうすればいいですか?
http://getbootstrap.com/javascript/
ここのdropdownのサンプルを見るとクリックで閉じるのはデフォルト動作のようです
しかし本来ドロップダウンはmousedownで閉じられるべきもので、
OSもそのようになっています
どうしたら・・
ここのdropdownのサンプルを見るとクリックで閉じるのはデフォルト動作のようです
しかし本来ドロップダウンはmousedownで閉じられるべきもので、
OSもそのようになっています
どうしたら・・
Bootstrapにその機能がないなら諦めとけ
Bootstrapを使うときは、Bootstrapで用意された機能や
デザインをそのまま受け入れること。
下手に自分のこだわりを通そうとするとハマる。
Bootstrapを使うときは、Bootstrapで用意された機能や
デザインをそのまま受け入れること。
下手に自分のこだわりを通そうとするとハマる。
jqueryで「指定したクラスを持つ子要素を持つdiv」を指定する方法を教えて下さい
表を作るライブラリみたいのありませんか?
カラムで並び替えたりできるやつです
カラムで並び替えたりできるやつです
>>23
ありがとうございます
ありがとうございます
jqueryでドルを単体で使った場合、ドルは何を指し示しているんですか?
こんな感じ↓名前空間?
$.getJson()
こんな感じ↓名前空間?
$.getJson()
>>27
動いたけど
http://jsbin.com/doyakubo/4
JSBinの使い方間違ってるんじゃない?
テンプレにもあるようにhttp://validator.w3.org/ ぐらいチェックして
それからライブラリの質問じゃないからスレ違い
動いたけど
http://jsbin.com/doyakubo/4
JSBinの使い方間違ってるんじゃない?
テンプレにもあるようにhttp://validator.w3.org/ ぐらいチェックして
それからライブラリの質問じゃないからスレ違い
>>28
おっと、それは失礼した
おっと、それは失礼した
domの作成をjqueryでやるメリットは何でしょうか?
作成に限って言えば、生JSで作成してもコーディング量、簡便さなど大差ない気がします
作成に限って言えば、生JSで作成してもコーディング量、簡便さなど大差ない気がします
DOM APIの何が嫌かって、スペルが長いことなんだよな。
document.getElementById('a').addEventListener('click', function() {});
$('#a').on('click', function() {});
もしくは
$('#a').click(function() {});
これだけでもDOM APIは嫌になるが、jQueryはさらに
セレクタをクラス名にするなどして、当てはまる要素全てに
イベントつけられるし。
DOMを扱う行が10行を超えたら、もうjQueryを使ったほうがいいと思う。
document.getElementById('a').addEventListener('click', function() {});
$('#a').on('click', function() {});
もしくは
$('#a').click(function() {});
これだけでもDOM APIは嫌になるが、jQueryはさらに
セレクタをクラス名にするなどして、当てはまる要素全てに
イベントつけられるし。
DOMを扱う行が10行を超えたら、もうjQueryを使ったほうがいいと思う。
>>33
それDOMのだと、もし#aの要素が無かったら…とか考えてしまう
それDOMのだと、もし#aの要素が無かったら…とか考えてしまう
jQueryはエラーにならないのか
これは面倒くさいな...
jQuery('#hogehoge').on('click', lisetener); // #hogehogeが存在しなくてもエラーにならない
これは面倒くさいな...
jQuery('#hogehoge').on('click', lisetener); // #hogehogeが存在しなくてもエラーにならない
存在しないことが想定されている場合には、nullチェックしなくていいからjQueryが楽
想定外ならjQueryは発見が遅れるって感じ
想定外ならjQueryは発見が遅れるって感じ
イベント定義するなら該当要素が存在する事を保証したロジックにする
しかし、それでも想定ミスで存在しなかったのならエラーになるのが望ましい
そうでないのなら、要素の存在有無でコードを条件分岐させるのが望ましい
…と俺は思う
しかし、それでも想定ミスで存在しなかったのならエラーになるのが望ましい
そうでないのなら、要素の存在有無でコードを条件分岐させるのが望ましい
…と俺は思う
>>35
いやそれは、IDで指定しているからそう思うんだよ。
#('.hoge').on()だと考えてみな。
.hogeは0個以上。
つまり要素が複数あってもなくても
コードを変える必要がない。
これは空の配列やNULLオブジェクトパターンにもつながる考え方。
たまに、var o; o = $('.o'); if(o.length) { o.on(・・・) } とか
var o = null; if(何かの条件) { o = なにか } if(o) { o.on(・・・) } みたいな
チェックコードをかく人がいるけど、
var o = $(); o.on(・・・)
という単純なコードでいいんだよね。
「0個以上の当てはまる要素」という風に一般化して考える。
いやそれは、IDで指定しているからそう思うんだよ。
#('.hoge').on()だと考えてみな。
.hogeは0個以上。
つまり要素が複数あってもなくても
コードを変える必要がない。
これは空の配列やNULLオブジェクトパターンにもつながる考え方。
たまに、var o; o = $('.o'); if(o.length) { o.on(・・・) } とか
var o = null; if(何かの条件) { o = なにか } if(o) { o.on(・・・) } みたいな
チェックコードをかく人がいるけど、
var o = $(); o.on(・・・)
という単純なコードでいいんだよね。
「0個以上の当てはまる要素」という風に一般化して考える。
要素があるかないかをいちいち調べるコードっていうのは
これみたいなあほさがあるよね。
※ aは配列
if (a.length > 0) { // ← 意味が無いチェック
for(var i = 0, max = a.length; i < max; i++) {
console.log(a[i]);
}
}
これみたいなあほさがあるよね。
※ aは配列
if (a.length > 0) { // ← 意味が無いチェック
for(var i = 0, max = a.length; i < max; i++) {
console.log(a[i]);
}
}
>>38
HTMLとcssの関係と同じだけど、
HTMLとJavaScriptの関係っていうのは
そういう風に密接につながったものじゃない。
それぞれ独立しているもの。
要素があるかないかを考える以前に、
要素があるかないかってのはわからないと考えるべき。
だから、ID指定でjQueryを使うっていうのは
だいたい間違った考えなんだよね。
だからjQueryのセレクタはクラス(や要素名や名前属性など)で指定し、
HTMLにはその要素はあってもなくてもいいものとして作る。
HTMLとcssの関係と同じだけど、
HTMLとJavaScriptの関係っていうのは
そういう風に密接につながったものじゃない。
それぞれ独立しているもの。
要素があるかないかを考える以前に、
要素があるかないかってのはわからないと考えるべき。
だから、ID指定でjQueryを使うっていうのは
だいたい間違った考えなんだよね。
だからjQueryのセレクタはクラス(や要素名や名前属性など)で指定し、
HTMLにはその要素はあってもなくてもいいものとして作る。
>>39
ノードリストならDOM APIでも普通に書けばエラーにならないけど、それは比較対象として適切?
そりゃあ、jQueryは内部的には配列だからそういう挙動になるだろうけど、「動くか動かないかわからない」という本質は変わってないよね
idで指定したときの問題に対してノードリストを上げるのは論理のすり替えじゃないの?
ノードリストならDOM APIでも普通に書けばエラーにならないけど、それは比較対象として適切?
そりゃあ、jQueryは内部的には配列だからそういう挙動になるだろうけど、「動くか動かないかわからない」という本質は変わってないよね
idで指定したときの問題に対してノードリストを上げるのは論理のすり替えじゃないの?
>>39
idかclassかは問題の本質とは関係ない
重要なのは「要素の存在を保証できるかどうか」だ
存在を保証できる場合というのは例えば、HTMLで事前に該当要素を書いている場合や要素の挿入直後の場合だ
この場合は要素が存在することは確定しているのでコード上で要素が非存在となるならエラーになることが望ましい
基本的にはしっかりとアルゴリズムを組めば要素の存在は保証できる
しかし、要素のappendChild, removeChild を繰り返す度にイベント定義する場合や多量ノードにイベント定義する場合は別だ
この場合はバブリングを利用して上位ノードに一つだけイベント定義するのが望ましい
そうすれば要素を入れ替える度の処理が不要になり、メモリ消費も削減できる
---
ノードリストでイベント指定する場合は>>42のいうように普通に組めばエラーにならない
存在確定する状況ならエラーにしてもいいが、それは人に依るだろう
最も、この場合はバブリング可能で上位ノードにイベント定義する場合が多く、その場合は上位ノードの存在保証が必要になる
(clickはバブリング可能なのであなたの出した例なら上位ノードを指定する)
> 要素があるかないかってのはわからないと考えるべき。
そもそも、アルゴリズムで要素の存在は保証されるべきだ
存在不明の要素にイベント定義するということは、そのイベントが動作する保証もないという事だ
そして、動かなかった時に「要素が存在しなくて動かなかったのか」「ハンドラのコードバグで動かなかったのか」の原因切り分けが全く出来てない状態からデバッグすることになる
これは良い実装とはいえない
idかclassかは問題の本質とは関係ない
重要なのは「要素の存在を保証できるかどうか」だ
存在を保証できる場合というのは例えば、HTMLで事前に該当要素を書いている場合や要素の挿入直後の場合だ
この場合は要素が存在することは確定しているのでコード上で要素が非存在となるならエラーになることが望ましい
基本的にはしっかりとアルゴリズムを組めば要素の存在は保証できる
しかし、要素のappendChild, removeChild を繰り返す度にイベント定義する場合や多量ノードにイベント定義する場合は別だ
この場合はバブリングを利用して上位ノードに一つだけイベント定義するのが望ましい
そうすれば要素を入れ替える度の処理が不要になり、メモリ消費も削減できる
---
ノードリストでイベント指定する場合は>>42のいうように普通に組めばエラーにならない
存在確定する状況ならエラーにしてもいいが、それは人に依るだろう
最も、この場合はバブリング可能で上位ノードにイベント定義する場合が多く、その場合は上位ノードの存在保証が必要になる
(clickはバブリング可能なのであなたの出した例なら上位ノードを指定する)
> 要素があるかないかってのはわからないと考えるべき。
そもそも、アルゴリズムで要素の存在は保証されるべきだ
存在不明の要素にイベント定義するということは、そのイベントが動作する保証もないという事だ
そして、動かなかった時に「要素が存在しなくて動かなかったのか」「ハンドラのコードバグで動かなかったのか」の原因切り分けが全く出来てない状態からデバッグすることになる
これは良い実装とはいえない
>>43
それは考え方が単純だよ。
「要素が絶対に存在していなければならない時」はなくてエラーなっても良いが、
「要素が存在していなくてもいい時」はエラーにならない方がいい。
HTMLをウェブAPIを実行するための入力フォームだと考えれば、
特定の画面にそのフォームがなければならないことというのはまず無い。
たとえば削除ボタン(POSTするフォーム)があったとしよう。
そのボタンに対してJavaScriptで確認ダイアログを表示するとしよう。
この削除ボタンはどのページにでも移動可能。そして一般的に
JavaScriptはHTMLに対してちょこっと付加価値を付けるという扱いで使うべき。
つまりこの削除ボタンに、特定のクラスをつけ、JavaScriptは
そのクラスに対して処理を付加することになる。
そして、この削除ボタンはデザイナーの都合で表示されなくなったり別のページに移動したりするわけ。
それでも、特定のクラスをつけた場合は全て同じ動きをする。
というベストプラクティスを達成する場合、クラスの有り無しを意識しちゃダメなんだよ。
それは考え方が単純だよ。
「要素が絶対に存在していなければならない時」はなくてエラーなっても良いが、
「要素が存在していなくてもいい時」はエラーにならない方がいい。
HTMLをウェブAPIを実行するための入力フォームだと考えれば、
特定の画面にそのフォームがなければならないことというのはまず無い。
たとえば削除ボタン(POSTするフォーム)があったとしよう。
そのボタンに対してJavaScriptで確認ダイアログを表示するとしよう。
この削除ボタンはどのページにでも移動可能。そして一般的に
JavaScriptはHTMLに対してちょこっと付加価値を付けるという扱いで使うべき。
つまりこの削除ボタンに、特定のクラスをつけ、JavaScriptは
そのクラスに対して処理を付加することになる。
そして、この削除ボタンはデザイナーの都合で表示されなくなったり別のページに移動したりするわけ。
それでも、特定のクラスをつけた場合は全て同じ動きをする。
というベストプラクティスを達成する場合、クラスの有り無しを意識しちゃダメなんだよ。
>>44
シンプルなプログラムならその考え方でいいが…。
「イベントA→イベントB→イベントC」の順に依存関係が存在した場合、イベントAが定義されないならイベントB,Cも定義されないのが望ましい。
jQueryでは定義/未定義を判別できず、例えばイベントBだけ定義された状況で思わぬバグを引き起こす可能性がある。
どちらかといえば、あなたの方が想定する状況を限定しすぎている(単純化している)ように思うが…。
バブリングについての意見はないのか?
一つだけの要素にイベント定義する場合も十分あるはずだが…。
シンプルなプログラムならその考え方でいいが…。
「イベントA→イベントB→イベントC」の順に依存関係が存在した場合、イベントAが定義されないならイベントB,Cも定義されないのが望ましい。
jQueryでは定義/未定義を判別できず、例えばイベントBだけ定義された状況で思わぬバグを引き起こす可能性がある。
どちらかといえば、あなたの方が想定する状況を限定しすぎている(単純化している)ように思うが…。
バブリングについての意見はないのか?
一つだけの要素にイベント定義する場合も十分あるはずだが…。
なんでイベントに依存関係があるんだよ?
依存関係があるのなら、それを一つにまとめるだけの話だろ。
依存関係があるのなら、それを一つにまとめるだけの話だろ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- JavaScript ライブラリ総合質問所 vol.5 (344) - [97%] - 2022/3/14 17:45
- jQuery ライブラリ 総合質問所 vol.4 (986) - [78%] - 2016/1/12 15:15
- 【jQuery】JavaScript ライブラリ総合質問所 vol.3 (1001) - [75%] - 2014/6/18 20:58 △
- 【jQuery】JavaScript ライブラリ総合質問所 vol.2 (986) - [75%] - 2013/5/20 7:00
- 【jQuery】JavaScript ライブラリ総合質問所 vol.1 (983) - [75%] - 2012/10/8 22:30
- [JavaScript]プログラム作成します (981) - [37%] - 2010/12/8 21:02
トップメニューへ / →のくす牧場書庫について