私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.116 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>390 のようなコードを書かずに済む様に
$(this) の戻り値の仕様を、無いときはデフォルトの機能はするが何もしない
オブジェクトを返すように変更するってできるのかな?
あと、一般論的にライブラリをそういう風に設計するって悪い方法?
$(this) の戻り値の仕様を、無いときはデフォルトの機能はするが何もしない
オブジェクトを返すように変更するってできるのかな?
あと、一般論的にライブラリをそういう風に設計するって悪い方法?
>>451
> $(this) の戻り値の仕様を、無いときはデフォルトの機能はするが何もしない
> オブジェクトを返すように変更するってできるのかな?
何を言ってるのかよくわからない。
この話?
http://api.jquery.com/jQuery/#jQuery
> Returning an Empty Set
>
> As of jQuery 1.4, calling the jQuery() method with no arguments
> returns an empty jQuery set (with a .length property of 0). In previous
> versions of jQuery, this would return a set containing the document node.
訳
jQuery()を引数なしで呼び出したら、空のjQueryセットを返します。
var $obj = $();
$obj.css(~) // 何もしない
> $(this) の戻り値の仕様を、無いときはデフォルトの機能はするが何もしない
> オブジェクトを返すように変更するってできるのかな?
何を言ってるのかよくわからない。
この話?
http://api.jquery.com/jQuery/#jQuery
> Returning an Empty Set
>
> As of jQuery 1.4, calling the jQuery() method with no arguments
> returns an empty jQuery set (with a .length property of 0). In previous
> versions of jQuery, this would return a set containing the document node.
訳
jQuery()を引数なしで呼び出したら、空のjQueryセットを返します。
var $obj = $();
$obj.css(~) // 何もしない
(何も言えないどうしよう・・・)
(そうだ!相手に考えさせちゃえ)
(自分も言えないが、相手を馬鹿にできるぞ!)
(そうだ!相手に考えさせちゃえ)
(自分も言えないが、相手を馬鹿にできるぞ!)
>>454
それはみんなわかってるからw
それはみんなわかってるからw
では実際のコードを少し変更したものを。
if ($.Hoge($(this).css('backgroundColor'))) === moge){
$(this).addClass('page');
}
$.Hogeは色情報を扱うjqueryプラグインです
背景色を正規化した上で比較し、クラスを設定しています
これをどう変えたらいいですか?
if ($.Hoge($(this).css('backgroundColor'))) === moge){
$(this).addClass('page');
}
$.Hogeは色情報を扱うjqueryプラグインです
背景色を正規化した上で比較し、クラスを設定しています
これをどう変えたらいいですか?
フリーズww
メソッドチェーン(わらい)で何とか出来るんじゃないんすか
メソッドチェーン(わらい)で何とか出来るんじゃないんすか
何かおかしいなって思ったら
最初に「いや自分が間違えてるんじゃないか?」って思うようにすれば恥かかなくて済むよ
それがA級プログラマーの思考習慣
最初に「いや自分が間違えてるんじゃないか?」って思うようにすれば恥かかなくて済むよ
それがA級プログラマーの思考習慣
>>456
それは設計がおかしいね。HogeがjQueryプラグインになっている理由がない。
つまり、jQueryの基本、「セレクタにマッチした要素全てに処理を行う」を満たしていない。
変な(jQueryの思想を理解していない)プラグインを作っちゃったからそうなったわけ。
jQueryプラグインとしてに書くならこうだよ。
$(this).filter(function() { return $(this).css('backgroundColor') === moge}).Hoge().addClass('page')
応用するとこんな風にしてコードの再利用もできる。
function cssFilter(name, value) {
return function() { return $(this).css(name) === value }
}
$(this).filter(cssFilter('backgroundColor', moge)).Hoge().addClass('page');
それは設計がおかしいね。HogeがjQueryプラグインになっている理由がない。
つまり、jQueryの基本、「セレクタにマッチした要素全てに処理を行う」を満たしていない。
変な(jQueryの思想を理解していない)プラグインを作っちゃったからそうなったわけ。
jQueryプラグインとしてに書くならこうだよ。
$(this).filter(function() { return $(this).css('backgroundColor') === moge}).Hoge().addClass('page')
応用するとこんな風にしてコードの再利用もできる。
function cssFilter(name, value) {
return function() { return $(this).css(name) === value }
}
$(this).filter(cssFilter('backgroundColor', moge)).Hoge().addClass('page');
$(this).filter $(this).css
複数回生成してね?
複数回生成してね?
お、少し読み間違えていたw
こうか。
function hogeFilter(name, value) {
return function() { return $.Hoge($(this).css(name)) === value }
}
$(this).filter(hogeFilter('backgroundColor', moge)).addClass('page');
どちらにしろ、$.HogeをjQueryプラグインにする理由はないけどね。
こうか。
function hogeFilter(name, value) {
return function() { return $.Hoge($(this).css(name)) === value }
}
$(this).filter(hogeFilter('backgroundColor', moge)).addClass('page');
どちらにしろ、$.HogeをjQueryプラグインにする理由はないけどね。
>>462
いや、そもそもこういうコードが
怪しいって話だから。
> if ($(this)~){
> $(this).css~
> }
> $(this).filter $(this).css
この二つのthisは同じものを
指しているわけじゃないから話が違う。
いや、そもそもこういうコードが
怪しいって話だから。
> if ($(this)~){
> $(this).css~
> }
> $(this).filter $(this).css
この二つのthisは同じものを
指しているわけじゃないから話が違う。
> この二つのthisは同じものを
> 指しているわけじゃないから話が違う。
もう少し詳しく説明すると、
$(this).filter(hogeFilter('backgroundColor', moge)).addClass('page');
このコードの$(this)は、ここではたまたまthisだけど、セレクタに変えられる。
話を脱線すると
$('span').filter(hogeFilter('backgroundColor', moge)).addClass('page');
こうすると、全てのspanの中でbackgroundColorがmogeであるもの全てに
pageクラスをつけることが可能。
これは if で条件分岐していたときには、単数しか処理できなかったのに比べて
jQuery風にセレクタに当てはまるもの全てを処理できるコードになってるわけ。
で、話を戻して、二つのthisの違いだけど、
$('span')はすべてのspanだけど、$(this).cssはfilterで呼ばれるから一つのspanになる。
ね? 違うものでしょ?
> 指しているわけじゃないから話が違う。
もう少し詳しく説明すると、
$(this).filter(hogeFilter('backgroundColor', moge)).addClass('page');
このコードの$(this)は、ここではたまたまthisだけど、セレクタに変えられる。
話を脱線すると
$('span').filter(hogeFilter('backgroundColor', moge)).addClass('page');
こうすると、全てのspanの中でbackgroundColorがmogeであるもの全てに
pageクラスをつけることが可能。
これは if で条件分岐していたときには、単数しか処理できなかったのに比べて
jQuery風にセレクタに当てはまるもの全てを処理できるコードになってるわけ。
で、話を戻して、二つのthisの違いだけど、
$('span')はすべてのspanだけど、$(this).cssはfilterで呼ばれるから一つのspanになる。
ね? 違うものでしょ?
かっこいいな。ifがなくなっちまってる。
これが関数型言語脳か~w
これが関数型言語脳か~w
そういう中身に関係のある条件ならいいけど、
関係のないのでも filter使ってんの?
たとえば、何かしらの条件でハンドラを付け外しする場合
$('.foo').css('foobar', 'hoge');
if (piyo == 3) {
$('.foo').click(function () {});
}
$('.foo').mouseup(function () {});
を
$('.foo').css('foobar', 'hoge')
.filter(function () {
return piyo == 3;
})
.click(function () {})
.end()
.mouseup(function () {});
こんな感じか…
関係のないのでも filter使ってんの?
たとえば、何かしらの条件でハンドラを付け外しする場合
$('.foo').css('foobar', 'hoge');
if (piyo == 3) {
$('.foo').click(function () {});
}
$('.foo').mouseup(function () {});
を
$('.foo').css('foobar', 'hoge')
.filter(function () {
return piyo == 3;
})
.click(function () {})
.end()
.mouseup(function () {});
こんな感じか…
filter使ったらすっきり書けました
ありがとうございました
(と良いところを素直に認めるのもA級プログラマーの重要な資質)
ありがとうございました
(と良いところを素直に認めるのもA級プログラマーの重要な資質)
更に気になるところをチョチョッと手直ししたら処理がすごく高速化しました
ケチを付けて頂きありがとうございました(>_<)
ケチを付けて頂きありがとうございました(>_<)
質問も回答も疑問をそのまま質問にすればいいだけなのに、なんで否定が先行するかなあ
おおらかな気持ちをもってほしいね
おおらかな気持ちをもってほしいね
>>412
IEなら、F12を押して、デバッグ実行してみ。
それで、エラーになる部分を、前後を含めて書いて。
IEのバージョンも書いて
>オブジェクトでサポートされていない
>プロパティまたはメソッドです
IEのバージョンが古くて、その機能に対応していないのかも。
IEをバージョンアップしたら?
IEなら、F12を押して、デバッグ実行してみ。
それで、エラーになる部分を、前後を含めて書いて。
IEのバージョンも書いて
>オブジェクトでサポートされていない
>プロパティまたはメソッドです
IEのバージョンが古くて、その機能に対応していないのかも。
IEをバージョンアップしたら?
filterの考え方を導入するとlodashのメソッドチェーン途中で抜けられない問題も解決できそうな気が。
スカラー値であってもコレクションのように扱ってフィルタする感じ?
スカラー値であってもコレクションのように扱ってフィルタする感じ?
スカラー値であってもコレクションとして扱って要素0ならエラーって感じで処理するのは
MaybeモナドやOptional型とか云々…
MaybeモナドやOptional型とか云々…
filterしたあとにfilterしてないものの集合を得るにはどうしたらいいですか?
end()したら、フィルタ前に戻せますが、
フィルタしてないものを得ようと思ったら再び全体にfilterをかけなくてはいけないのが
クールじゃないです
end()したら、フィルタ前に戻せますが、
フィルタしてないものを得ようと思ったら再び全体にfilterをかけなくてはいけないのが
クールじゃないです
filter→filter→end
ってやったらどの時点に戻るんだろ?
ってやったらどの時点に戻るんだろ?
>>477
もうちょっとクールな日本語で説明たのむ
もうちょっとクールな日本語で説明たのむ
>>478
ひとつ目のfilterの後
ひとつ目のfilterの後
>>479
アスペは黙って寝てろ
アスペは黙って寝てろ
if ~ else ~
みたいなことをfilterを使ってしたいのです
最初のfilterでif~は出来ますが、
else~をするには、endで元に戻してからまた条件を逆にしたfilterをかけないといけなくて
それがダサいのです
みたいなことをfilterを使ってしたいのです
最初のfilterでif~は出来ますが、
else~をするには、endで元に戻してからまた条件を逆にしたfilterをかけないといけなくて
それがダサいのです
filterをかけた時の元オブジェクトってどこに保存されてるんですかね?
それが分かればそういうプラグインかけるのでは
それが分かればそういうプラグインかけるのでは
>>485
適当に作れば?
$.fn.else = function(){
var _this = this;
return $($.grep(this.end(), function(n,i){
return $.inArray(n, _this) == -1;
}));
}
適当に作れば?
$.fn.else = function(){
var _this = this;
return $($.grep(this.end(), function(n,i){
return $.inArray(n, _this) == -1;
}));
}
>>477
> filterしたあとにfilterしてないものの集合を得るにはどうしたらいいですか?
俺だったらこうするかな。
var a = [], b = [];
$('.foo').each(function() {
if ($(this).なんとか) {
a.push(this);
} else {
b.push(this);
}
});
$(a).text(1);
$(b).text(2);
switchなどを使えば、3つ以上でも分割できる。
jQueryプラグインを作るならばこういうのも出来なくはないけど、ちょっと見にくそうだ。
$('.foo').filter2(
function() { return $(this).なんとか; },
function() { /* trueの時のjQueryuオブジェクト */ },
function() { /* falseの時のjQueryuオブジェクト */ },
);
Deferredっぽく以下の様なコードも考えたけど、
使う機会を考えると、作るまでもないかな。
var obj = $('.foo').filter3(function() { return $(this).なんとか; });
obj.trueCollection(function() { /* trueの時のjQueryuオブジェクト */ });
obj.falseCollection(function() { /* falseの時のjQueryuオブジェクト */ });
> filterしたあとにfilterしてないものの集合を得るにはどうしたらいいですか?
俺だったらこうするかな。
var a = [], b = [];
$('.foo').each(function() {
if ($(this).なんとか) {
a.push(this);
} else {
b.push(this);
}
});
$(a).text(1);
$(b).text(2);
switchなどを使えば、3つ以上でも分割できる。
jQueryプラグインを作るならばこういうのも出来なくはないけど、ちょっと見にくそうだ。
$('.foo').filter2(
function() { return $(this).なんとか; },
function() { /* trueの時のjQueryuオブジェクト */ },
function() { /* falseの時のjQueryuオブジェクト */ },
);
Deferredっぽく以下の様なコードも考えたけど、
使う機会を考えると、作るまでもないかな。
var obj = $('.foo').filter3(function() { return $(this).なんとか; });
obj.trueCollection(function() { /* trueの時のjQueryuオブジェクト */ });
obj.falseCollection(function() { /* falseの時のjQueryuオブジェクト */ });
なんでみんな「filterしてないもの」=「filterで抽出されなかったもの」なんて理解できるんだ?
おれは>>484の説明でやっと理解できたよ
普通は「filterしてないもの」=「filterする前のもの」だろ?
おれは>>484の説明でやっと理解できたよ
普通は「filterしてないもの」=「filterする前のもの」だろ?
まさか「filterしてないもの」!=「filterする前のもの」なんて想像もできなかったわ
みんな凄いな
みんな凄いな
なんかtweetdeckでtweetdeck xssとかいうアラートが出たのですが
大丈夫ですか?
大丈夫ですか?
>>494
お前がアスペなだけ
お前がアスペなだけ
XSSで勝手にRTされてました
ログアウトしたらログインできなくなりました
ツイートに含まれたスクリプトそのまま実行するってどんだけ
ログアウトしたらログインできなくなりました
ツイートに含まれたスクリプトそのまま実行するってどんだけ
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.110 + (1001) - [97%] - 2013/10/13 14:01
- + JavaScript の質問用スレッド vol.126 + (348) - [97%] - 2023/1/12 17:00
- + JavaScript の質問用スレッド vol.119 + (1002) - [97%] - 2014/10/3 15:30
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [97%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.115 + (1001) - [97%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.114 + (1001) - [97%] - 2014/5/3 10:45
- + JavaScript の質問用スレッド vol.112 + (1001) - [97%] - 2013/11/27 16:46
- + JavaScript の質問用スレッド vol.111 + (1001) - [97%] - 2013/11/4 6:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.136 + (1001) - [97%] - 2019/1/8 11:30
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.126 + (952) - [97%] - 2015/11/18 13:15
- + JavaScript の質問用スレッド vol.107 + (1001) - [95%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.100 + (1001) - [95%] - 2012/6/13 22:46
トップメニューへ / →のくす牧場書庫について