のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,432,643人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript & jQuery 質問用スレッド vol.7 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
901 : Name_Not - 2017/11/03(金) 20:55:54.74 ID:???.net (+57,+29,-7)
サンプルもなにもそのままじゃん
いっつも?
902 : Name_Not - 2017/11/03(金) 20:59:23.37 ID:???.net (+31,-30,-64)
他の処理→$('#hoge')の処理→$('#hoge')の処理すればいいだけ
903 : Name_Not - 2017/11/03(金) 21:09:30.91 ID:???.net (-1,-29,-9)
<select>なんかキーボードですぐ値変わる(変えられる)からな。
904 : Name_Not - 2017/11/03(金) 21:12:04.30 ID:???.net (+96,+29,-20)
>>902
それができないケース今までに経験したことない?
処理というか値参照含めて
905 : Name_Not - 2017/11/03(金) 21:42:41.50 ID:???.net (+57,+29,-18)
経験したことがあったとしても、原則論は変わらんやろ
別に並行宇宙の隅々にまでそんな可能性は落ちとらん言ってるわけやないんやから
906 : Name_Not - 2017/11/03(金) 22:03:44.66 ID:???.net (+57,+29,-42)
>> 904
> それができないケース今までに経験したことない?

それを書けって言ってるのに、
これがサンプルも何もそのまんまじゃんって言ったんだから
このサンプルは順番入れ替えられるで終わりだろ
907 : Name_Not - 2017/11/03(金) 22:04:58.65 ID:???.net (+78,+29,-24)
>>904
> それができないケース今までに経験したことない?

ありませーんw あんたの書き方が悪いだけでーす
908 : Name_Not - 2017/11/03(金) 23:59:24.19 ID:???.net (+19,-30,-38)
$('#hoge').val() を100回加算は?
909 : Name_Not - 2017/11/04(土) 00:07:26.14 ID:???.net (+21,-18,-16)
>>907
プログラム未経験?w
910 : Name_Not - 2017/11/04(土) 00:17:34.23 ID:???.net (-1,-30,-39)
>>908
どういう意味?
$('#hoge').val() を100倍するってこと?
911 : Name_Not - 2017/11/04(土) 00:37:24.17 ID:???.net (+5,-30,-148)
答えてくれないので、最初のval()で1が入っていたとして
1+1 → 2
2 + 2 → 4
4 + 4 → 8
を100回繰り返すことにしたよw

$('#hoge').val(function() {
return _.range(100).reduce(v => v + v, parseInt(this.value))
});
// 1.2676506002282294e+30

http://jsfiddle.net/636wr4mu/

で、本題はなんだっけ?
$('#hoge')を一回で済ませる? 済ませたが?
何ができないの?

>>909
プログラム未経験?www


はぁ~、結局ちゃんとした書き方をしらねーだけじゃねーか。
はぁ~、本当に情けない。
912 : Name_Not - 2017/11/04(土) 00:39:56.52 ID:???.net (+57,+29,-34)
更新 一行に修正した
http://jsfiddle.net/636wr4mu/1/

jQueryはforでループをぐるぐる処理する書き方よりも
こういう宣言的な書き方のほうが似合ってるよね。
913 : Name_Not - 2017/11/04(土) 00:42:51.60 ID:???.net (+3,-30,-66)
コード載せるの忘れた

$('#hoge').val((i, value) => _.range(100).reduce(v => v + v, parseInt(value)))
914 : Name_Not - 2017/11/04(土) 00:49:34.71 ID:???.net (+3,-30,-252)
面白い応用例

http://jsfiddle.net/636wr4mu/4/

CSSはセレクタに適合する要素にたいして
同じスタイルを適用するのと同じように

jQueryはセレクタに適合する要素にたいして
同じ処理を適用することができる

なので、#hogeみたいに単独のIDではなく
.hogeみたいなクラスにすると、CSSで
一行ですべての要素に色を付けるのと同様
jQueryで一行で全ての要素に処理を適用できる

<input class="hoge" value="1"><br>
<input class="hoge" value="2"><br>
<input class="hoge" value="3"><br>

.hoge { color: green }

$('.hoge').val((i, value) => _.range(100).reduce(v => v + v, value|0))
915 : Name_Not - 2017/11/04(土) 00:54:13.43 ID:???.net (+38,+15,-17)
アローなしでは?
916 : Name_Not - 2017/11/04(土) 00:55:14.50 ID:???.net (-6,-29,-5)
普通にfunctionで書けば?
917 : Name_Not - 2017/11/04(土) 00:57:59.99 ID:???.net (+36,-30,-47)
ほれ、単に function と return と {} が増えるなーぐらいの話でしかないよ

$('.hoge').val(function(i, value) {
 return _.range(100).reduce(function(v) { return v + v; }, value|0);
});
918 : Name_Not - 2017/11/04(土) 01:00:30.16 ID:???.net (+4,-30,-64)
>$('#hoge')の処理→他の処理→$('#hoge')の処理
ではないわな
919 : Name_Not - 2017/11/04(土) 01:03:29.79 ID:???.net (+105,+29,-10)
>>917
世間一般こういう書き方してるのでしょうか?
ただfor回したほうがわかりやすくないですか?
920 : Name_Not - 2017/11/04(土) 01:04:46.18 ID:???.net (+4,-30,-283)
>>918
わざとか?

>$('#hoge')の処理→他の処理→$('#hoge')の処理
の例を出せと言ったら

>>908
> $('#hoge').val() を100回加算は?
って言ったんだよ。

>>908は$('#hoge').val() を100回加算を
$('#hoge')の処理→他の処理→$('#hoge')の処理
の例として出したから、俺はそれを並び替えて

$('#hoge')の処理(の中に他の処理を含める)
として書き直してやったんだよ。

「ではないな」と言われても知らんがなw
921 : Name_Not - 2017/11/04(土) 01:09:13.75 ID:???.net (+12,-30,-149)
>>919
forで回したいなら回せばいいじゃん?
俺は変数の値を変えるのではなく宣言的に書くのが
優れているという世間一般の認識どおりに書いただけの話
例のconstで十分って話の続きよ

ほらよ。変数の値を変える方に書き換えてあげるよ。

$('.hoge').val(function(i, value) {
 let v = parseInt(value);
 for (let i = 0; i < 100; i++) { v += v; }
 return v;
});

それが今回の$('.hoge')は一回で十分だろって話に
何の関係があるのか知らんが
922 : Name_Not - 2017/11/04(土) 01:13:39.30 ID:???.net (+80,+30,-73)
>>919
たかが足し算するのにそんな大げさに書くのは変人の類。
1回変数に入れるだけで、キャッシュする必要ないよは言い過ぎ。
また作り方が悪いとは言えない(多いだから全否定ではないのでそこはOK)。

ちなみに>>894はワシではない。
923 : Name_Not - 2017/11/04(土) 01:18:02.71 ID:???.net (+66,+29,-121)
な?これで証明できただろ?
ちゃんとしたjQueryの書き方で書いていれば、
変数に入れておきたいというシチュエーションがないってことが。


毎回取得すればいいし、取得した方が動的にページが変わっても対応できるし
結局、jQueryオブジェクトを変数に入れて置くのは作り方が悪いってことなんだよ。
924 : Name_Not - 2017/11/04(土) 01:34:53.50 ID:???.net (+1,-29,-66)
ふむ。なーんとなく>>908>>899の言う$('#hoge')の処理が二回出て来る例で
>>913とかがそれを論破するコードであることに気づいていない人がいそうだ。
解説したほうが良いかね?
925 : Name_Not - 2017/11/04(土) 02:46:22.55 ID:???.net (+40,-29,-69)
template要素に最初にイベント付加しといて
importNodeでイベントもクローンしたいのですができますか?
http://jsfiddle.net/p1bnwqxz/
これですんなり行くと思ったら無理でした
なのでtemplateを諦めてしまったのです
http://jsfiddle.net/p1bnwqxz/1/
926 : Name_Not - 2017/11/04(土) 03:41:16.44 ID:???.net (+104,+29,-63)
>>925
動的に生成される要素に対して
イベントを予めつけるのは無理だよ

こういうのは、document(もしくは#test)に対してイベントを付けておけばいい
といってもjQueryなら簡単。単に引数を変えるだけ

まずは最小限の修正
http://jsfiddle.net/p1bnwqxz/2/

そして余計なものを削った
http://jsfiddle.net/p1bnwqxz/4/

応用(書き方のバリエーション)
http://jsfiddle.net/p1bnwqxz/5/
927 : Name_Not - 2017/11/04(土) 03:52:33.39 ID:???.net (+62,+29,-88)
ん? jQueryのcloneメソッドにはイベントごとクローンするオプションがあるのか?
でもtemplate要素と組み合わせるとうまくいかない?
興味がある人は試してみるのも良いかも

俺としては親要素にたいしてイベントつける方をすすめるけどね
イベントハンドラを一つしか作らなくていいから軽いはず
928 : Name_Not - 2017/11/04(土) 03:53:13.34 ID:???.net (+57,+29,-19)
あぁ、それが
> これですんなり行くと思ったら無理でした
> なのでtemplateを諦めてしまったので
の方か
929 : Name_Not - 2017/11/04(土) 05:03:02.14 ID:???.net (+76,+29,-63)
>>926,927
>動的に生成される要素に対して
>親要素にたいして
なるほど
今まではイベントは、アクションのある要素一つ一つに(指定して)付加しないと発火しないものだと思っていました
(なので、後からappendされた要素になぜイベントが適用されてるんだろう・・と一瞬意味がわかりませんでした)
CSSみたいな感覚?で良かったのですね
今までもやもやしてた部分がスッキリしました
ありがとうございます
930 : Name_Not - 2017/11/04(土) 13:46:54.45 ID:???.net (+13,-29,-30)
>>923
$('#hoge')の「処理を」というより「値を」ということでは
931 : Name_Not - 2017/11/04(土) 15:47:31.83 ID:???.net (+38,-29,-107)
>>930
何が言いたいかわからない。
いまの話題は$('#hoge')を$hogeに入れておく必要はないよって話

DOM要素が変化する可能性を考えると、最新のDOMに追従するために
その都度取得した方がいいし、それによる速度低下も殆ど無い
なにより大抵の場合はイベントハンドラ呼び出しごとに1回の取得ですむ
932 : Name_Not - 2017/11/04(土) 17:32:23.11 ID:???.net (+62,+29,-18)
>>931
ケース・バイ・ケース
それはキミのローカルルールだろw
933 : Name_Not - 2017/11/04(土) 19:19:39.94 ID:???.net (+64,+29,-5)
だから入れておいた方がいいケースってのを
聞いてるんだがw
934 : Name_Not - 2017/11/04(土) 21:04:47.12 ID:???.net (+63,+30,-60)
入れておいた方がいいというか、入れない方が自然で誰もが読める場合はすでに出てる
最新のDOMに追従はその通りだが変数使わないで無理に不自然にする必要もない

それと負けず嫌いほど論破という言葉を使うのはどの板も同じだな
935 : Name_Not - 2017/11/04(土) 21:12:30.88 ID:???.net (+57,+29,-4)
入れておいた方がいいケース、早く出してね
936 : Name_Not - 2017/11/04(土) 21:47:22.74 ID:???.net (+47,+24,-28)
お前らって本当にローカルだなw
937 : Name_Not - 2017/11/04(土) 22:25:19.55 ID:???.net (+57,+29,-38)
ローカルとかそういう問題じゃなくて
どういう時に変数に入れて2回以上使うかの
コードを書けばいいだけ
938 : Name_Not - 2017/11/04(土) 22:50:49.48 ID:???.net (+57,+29,-6)
他スレにもいたがコード書いて一生懸命なのはありがたいがかなり特殊だよな。
939 : Name_Not - 2017/11/04(土) 23:31:07.85 ID:???.net (-1,-29,-67)
jQuery 3.2でtemplate要素に対応していたんだな
.contents()で中の要素を参照することができる
940 : Name_Not - 2017/11/05(日) 05:41:19.34 ID:???.net (-1,-29,-50)
まあjQueryでWeb Compornentsをやるとか旗から見たらタダのjQuery依存症だけどな
941 : Name_Not - 2017/11/05(日) 10:10:08.54 ID:???.net (+3,-30,-43)
でもWeb Componentsサポートの機能も入ってるよw

http://github.com/jquery/jquery/wiki/Roadmap
Improve support for "Web Components" features like ShadowRoot
942 : Name_Not - 2017/11/05(日) 11:54:05.59 ID:???.net (+94,+29,-49)
jQuery自体が仮想DOM的な要素も持っているから相容れないよね
943 : Name_Not - 2017/11/05(日) 12:22:54.66 ID:???.net (+75,+29,-199)
>>942
知らない話に無理に参加する必要はないぞw

jQueryと仮想DOMは全く関係ないし
Shadow DOMの間違いだとしてもjQueryとは関係ない

jQuery UIの話だとしても、将来jQuery UIをShadow DOMで
実装するというアイデアは誰だって思いつくだろう
944 : Name_Not - 2017/11/05(日) 12:33:22.95 ID:???.net (+22,-30,-56)
>>933
var str = $('#manko').text();
$('.chinko').each(function(){
$(this).css('color', $(this).text() == str ? red : blue);
});
945 : Name_Not - 2017/11/05(日) 12:37:33.12 ID:???.net (+30,-29,-54)
↑ jQueryオブジェクトを変数に入れる必要がない例
(このようにthisを使えば良いんやで)
946 : Name_Not - 2017/11/05(日) 12:41:00.32 ID:???.net (+0,-29,-4)
>>944
redとblueが定義されてない
947 : Name_Not - 2017/11/05(日) 12:46:18.81 ID:???.net (+5,-30,-50)
>>944
長い

var str = $('#manko').text();
$('.chinko').css('color', function() {
 return $(this).text() == str ? "red" : "blue";
});
948 : Name_Not - 2017/11/05(日) 13:00:28.58 ID:???.net (+3,-30,-288)
つーか、この話題。質問者の次のレスで解決してる話なんかw

892 名前:Name_Not_Found[sage] 投稿日:2017/11/03(金) 04:58:11.05 ID:???
イベント内であるノードを操作するとき、
その度に取得したらいいのかそれとも変数に格納しておくのが良いのか
よくわからないのでどちらがいいのか教えてください
$hoge=$('#hoge');
$('button#fuga').click(function(){ $hoge.text('操作'); });
//がいいのか、それとも
$('button#fuga').click(function(){ $('#hoge').text('操作') });
//がいいのか
//双方メリットデメリットがあるのか、など

893 名前:Name_Not_Found[sage] 投稿日:2017/11/03(金) 08:47:53.21 ID:???
せっかくjQuery使ってるのにわざわざキャッシュとかする必要ないよ
できるだけ簡潔に書けばいい
949 : Name_Not - 2017/11/05(日) 13:33:20.03 ID:???.net (+9,-30,-198)
$('#fuga').on('click', function(){ $('#hoge').text('操作'); });
IDセレクタに要素名は不要

var $manko = $('#manko');
$('.chinko').each(function(){
if ($manko.text() == $(this).text()) { testが等しい場合の処理 }
else if ($manko.attr('id') == $(this).text()) { idが等しい場合の処理 }
});
こういうケースはキャッシュするべき

若干でも明らかに速度が違ってくる
950 : Name_Not - 2017/11/05(日) 13:37:51.21 ID:???.net (+9,+0,-21)
jQueryの時点で速度も糞もあるかw
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について