X



jQuery 質問スレッド vol.7 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001Name_Not_Found
垢版 |
2016/11/02(水) 11:51:34.33ID:???
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/
0974Name_Not_Found
垢版 |
2017/10/20(金) 20:06:26.82ID:???
>>936です。

>>965
せっかくですがie9で機能しないのです。
それとなるべくならHTMLにそこまでの大きな変更をしたくないです。
でもありがとうございます。

>>971
やはり戻るは捨てですかね。
現状、多さと速さ及び一部cookieに使えるので変数管理してます。
なので、保存は容易いです。
WebStorageは別件で使用してますが、cookieより容量多く記述や扱いも簡単で重宝してます。
ie8以上その他古いブラウザも対応してますし。
1行目調べてみます。ヒントありがとうございます。
0976Name_Not_Found
垢版 |
2017/10/20(金) 23:40:08.06ID:???
>>974
各フレームワークのやり方を調べて、やり方がわかったら、ここで発表して

Rails, Angular, React, Backborn,
jQuery Mobile, Monaca(Cordova)
0977Name_Not_Found
垢版 |
2017/10/21(土) 12:38:23.66ID:???
スレチでしたら誘導お願いします
https://www.wan55.co.jp/column/detail/id=447
絞り込み検索をするのに上のページがほぼやりたかったことに近く、使わせてもらったのですが
チェックボックスでの絞り込み条件をORではなくANDにしたいです
上のDEMOでいうと「哺乳類」「だれなん?」をクリックすると「おじさん」1件のみが表示されるようにしたいのです
よろしければ教えていただけないでしょうか
0980Name_Not_Found
垢版 |
2017/10/21(土) 20:31:21.79ID:???
誰か>>979を訳してほしい

ちなみに
>JSが実行されるので値を元に色をつける
だとjsを使う分部とそうでない部分が出ると読めるが統一性が中途半端になりそう
違ったらゴメン
0981Name_Not_Found
垢版 |
2017/10/21(土) 21:43:55.31ID:???
>>977
元のコードも、悪くはいんだけどまだまだコードが洗練されてないね。
とりあえず元のコードの半分まで減らした。ES6機能は意図的に使ってない。
https://jsfiddle.net/3cnkcyjk/10/

絞り込み条件の部分は、リストの項目ごとに「tag」の値が複数入っている。
またチェックボックスもチェクされた値が複数ある。

要するにORというのは、tag配列とチェックボックス配列、
配列と配列のどれかが一致したということで、これは
配列の積集合(共通の値)の結果の配列が1個以上あるということ

AND条件というのは、tag配列とチェックボックス配列の
積集合の結果の配列が、チェックボックスの配列と同じであること
(ただし順不同で重複する値がないこと)

他にもやり方は有るが、ORに比べて少しややこしくなるので
チェックボックスの数だけ_.everyで回して値が
全てtag配列に含まれてることを確認するのがわかりやすそうだね。

コードで書くとこうだね
_.every(values, function(value) { return _.includes(item.tag, value) })
0984Name_Not_Found
垢版 |
2017/10/22(日) 04:16:08.98ID:???
CSS の黒色

black, #000000, #000
0986名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 13:10:53.90ID:???
>>981
わざわざ書き直しまでありがとうございます!
最初動かなくて焦ったのですがunderscoreではなくlodashを使用するのですね
残念ながら初心者のためせっかく教えていただいたコードをどこに差し替えるかも分からないレベルですが
作りたいものは個人的な趣味の範囲なので焦らずじっくり学ばせていただきます
本当にありがとうございました
0987名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 14:36:49.57ID:???
>>986
> 最初動かなくて焦ったのですがunderscoreではなくlodashを使用するのですね

underscoreと互換性がある機能だけを使ったつもりだったんだが残念。
_() は使えず、_.chain() と書かないといけないのと
_.containsで文字列が使えないんだな。

lodashの方がおすすめだが、underscore版を作っておいた。
https://jsfiddle.net/3cnkcyjk/12/

あとさほど大きくは変わらんのだが、ES6対応とl
odash専用になるがテンプレートを書き換えた。
https://jsfiddle.net/3cnkcyjk/14/
0990Name_Not_Found
垢版 |
2017/10/25(水) 10:32:03.29ID:???
>>987
遅くなりましたが本当にありがとうございます
お金払うレベルかと思うほど親身にして下さって感謝しています
お陰様でなんとかAND検索に差し替えることもできました
助かりました、本当にありがとうございました
0991Name_Not_Found
垢版 |
2017/10/25(水) 23:14:09.98ID:???
親身っていうかあれやな。
元のコードが挫折するほど汚かったらやる気なくなったがそこまでじゃないし、
汚くはないけど、なんかやり方間違ってるなー感があったので
どこまで減らせるかネタとして面白かったからやっただけやな。
運が良かっただけだ。
0992977
垢版 |
2017/10/26(木) 15:11:54.26ID:???
>>991
981=987さんでしょうか
スレが埋まるのに甘えてもう一つだけお尋ねします

https://jsfiddle.net/3cnkcyjk/10/
このjsの最後の「テキストボックス絞り込み関数」で、名前または説明文の中に検索単語が含まれている場合に一覧を絞り込むようになっていますが
説明文(description)をタグのように[ ]でくくって複数記述していた場合、説明文からの結果が一致しないとみなされて0になってしまいます
「description」を「tag」に置き換えた場合に、テキストボックスに「類」と打つと哺乳類・鳥類・魚類・昆虫類の結果が出るようにしたいといえば伝わるでしょうか
「_.includes」を自分なりにeachをつけてみたりintersectionに変更してみたりしましたが勉強不足でうまくいきません
部分一致で結果を引っ張るためにはどうしたら良いでしょうか
0993Name_Not_Found
垢版 |
2017/10/27(金) 00:50:20.44ID:???
>>992
まず最初に、wordsの名前が良くなかった。keywordsという名前に変更する
https://jsfiddle.net/3cnkcyjk/15/

最後の行、コードが重複してるなーって思っていたわけよ
(同様に word も keyword に変更している)

_.includes(item.title, keyword) || _.includes(item.description, keyword);

この部分。_.includesが二回でてる。keywordが二回出てる。気に食わない。
が、二回程度なら諦めるか。でこういうコードにした。

そこに今回さらにdescriptionが配列になる(descriptions)わけでもっと複雑になるわけだ

じゃあここで発想を変えよう。
最終的には、titleかdescriptions[0]かdescriptions[1]かdescriptions[N]のどれかに
入っていればOKということになるわけだ。

ってことはだ。
words = [item.title, item.descriptions[0], item.descriptions[1],...,item.descriptions[N]]
という配列を作っておき、この配列の文字列の何処かに含まれていればOKってことになるわけだよ。

あとは、wordsの配列の中のword文字列の中にkeywordが含まれているか?
ということで、

_.includes(item.title, keyword) || _.includes(item.description, keyword);
と等価なのは
var words = [item.title, item.description];
return _.some(words, function(word) { return _.includes(word, keyword) });
ということになる。

https://jsfiddle.net/3cnkcyjk/16/
0994Name_Not_Found
垢版 |
2017/10/27(金) 01:05:22.75ID:???
ただよ? これでも動くけど

これってkeywords(入力されたキーワードをスペース区切りって作った)配列と
[title, descriptiuon] 配列の全部の組み合わせを・・・

ここで気づいた。lodashにproduct関数ねぇのかよ!

例えば、["title", "description"] に ["a", "i"]のいずれかが含まれているか?っていうのは
2つの配列の全組み合わせ

"title" include? "a"
"title" include? "i"
"description" include? "a"
"description" include? "i"

となるわけだよ。これをproductとかいう関数に食わせれば話は早いんだが、ないなら仕方ない。
とりあえず今回は、順番を変えるだけで済ませよう。

return _.some(keywords, function(keyword) {
 return _.some(words, function(word) {
  return _.includes(word, keyword)
 });
});

これでkeywordsとwordsの総当りに対して、includesを実行することになるわけだ。
https://jsfiddle.net/3cnkcyjk/17/
0995Name_Not_Found
垢版 |
2017/10/27(金) 01:30:38.60ID:???
あとは、wordsの部分だけだな
var words = [item.title].concat(item.description);
これだけでOK


ついでにkeywordsに分割する部分の正規表現が無駄だったので修正
https://jsfiddle.net/3cnkcyjk/19/

ついでにこの_.escapeはいらないと思うので削除
https://jsfiddle.net/3cnkcyjk/20/

あとやっぱりproduct使わないと見づらいので
https://www.npmjs.com/package/lodash.product つかった
https://jsfiddle.net/3cnkcyjk/21/

そしてfilterByKeyword関数だけES6にしてみた
https://jsfiddle.net/3cnkcyjk/22/
0996977
垢版 |
2017/10/28(土) 11:34:18.59ID:???
本当にありがとうございます
月並みな感謝の気持ちしか書けず申し訳ないです
全てを理解できるレベルには達していませんが一つ一つページ確認させてもらいました
参考にしてようやくやりたかった内容が完成しました
キーワード検索もバッチリで気持ちがいいです
(他板のスレに投稿したところスレ住民も便利だと喜んでくれました)
大変お世話になりました、ありがとうございました
1000小倉優子 ◆YUKOH0W58Q
垢版 |
2017/11/01(水) 05:43:39.74ID:???
  ∧,,,∧ 
 (  ・∀・) 1000ならジュースでも飲むか
  (    ) 
  し─J 
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 363日 17時間 52分 5秒
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況