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/ WEBプログラミング板のスクリプト改造スレから「web制作管理板のjQueryスレで聞いた方が良いかも」と誘導されて参りました。
荒らし報告ツールの改造についてどなたか御対応できないでしょうか。
詳細は下記となります。
http://tamae.2ch.net/test/read.cgi/php/1314546533/178
本当に「jQueryスレ」がここで正しいのか自身がなく、かつスクリプト改造依頼になりますので、
正しい対象スレッドなどがありましたら、そちらに誘導をお願いできましたらと思います。 >>252
これはめんどくさいな〜
これを改造するなら拡張機能になるけどめんどくさすぎる
1からサイト作ることになるけど誰が管理するの?
多分自分で勉強して作ったほうが良いと思う
もしかするとエクセルvbaの方が楽に作れるかもしれない if($(window).width() < 541)){
$(".foo").scroll(baz);
}else {
$(.bar).scroll(baz);
}
function baz() { 以下の時、うまくまとめて書く方法はありますか?
無名関数に名前をつけたり、変数に入れずになんとかやろうとしていましたがこんがらがってきました
・スクロールさせた時に関数を実行
・画面サイズ(540pxがしきい値)でスクロールする対象のオブジェクトは変わる。モバイルは.foo、PCはwindow全体
・無名関数で実行したい
・変数や関数の名前を使いたくない
if($(window).width() < 541)){
$(".foo").scroll(baz);
}else {
$(window).scroll(baz);
}
function baz() {
/* 処理 */
} >>256
/*処理*/の内容に依存していて、コードも変わってくる気がする
変数など宣言はしたくないのはなぜか、はとりあえず置いといて
($(window).width()<541?$(".foo"):$(window)).scroll(function(){/*処理*/}) >>257-258
一般論として、jQueryオブジェクトを三項演算子の評価値として使わない方がいい。
再利用しづらくなるし、コードによっては遅くなったり無駄ができたりする。
同様の理由でjQueryオブジェクトを変数に入れたり関数の戻り値するのもおすすめしない
(あとスペースは適切に入れたほうが良い。)
今回の場合はこう書いたほうが良いよ。
$($(window).width() < 541 ? ".foo" : window).scroll(function() {/*処理*/ });
これはこれで見づらいので俺ならこうするけどな。
var target = $(window).width() < 541 ? ".foo" : window;
$(target).scroll(function() {/*処理*/ });
更に言うならば、画面の大きさによってデザインを変えるっていうのは
通常CSSのMedia Queryを使うのがいい。
おそらくその閾値541っていうのはデザインのためにCSSに書いてあるでしょ?
コードでも同じことを書いたら二重になってしまう。
ちょっと俺はやったことないんでもっといい方法があるかもしれないけど、
例えばMedia Queryを使って要素の表示非表示させて:visibleセレクタで判別するとかね >>256
でさ、今更気づいたんだけど、
画面表示されてからサイズ変えた時大丈夫?
まああんまりやることはないと思うけどさ、
何か違和感あると思ったら、そこなんだったんだな。
通常イベントハンドラっていうのは最初のページ表示時につけて
それ以降付け替えたりしない。付け替えたりしなくても動くようにするんで
画面サイズで切り替えたりしないんだよね こうじゃないの?
にしてもscrollの対象が変わることなんてあるんけ?
$([$(".foo")[0],window]).scroll(function(){
//ここで分岐
}); jQuery Mobile は、パソコン・スマホ共用 >>252
ご返答ありがとうございます
>>254
サイトぐらいは自分で作りますよ
そして色んな人に使って貰いたい
自分だけが報告するわけじゃなくみんなで報告しやすいようにと考えると
やっぱりこのようなWeb系のツールが最良ですので
>多分自分で勉強して作ったほうが良いと思う
良い悪いではなく出来る出来ないの問題でして
>>259
>その処理だけを、新しく作ったらどうか?
それができたらここには来てませんね >>264
なぜ、そんなに偉そうな態度をとれるのだろう?
サイトを自作するならJavaScriptも自分で作る気概を見せなよ
ここは制作依頼する場所ではなく、質問者が作るのを手助けする場だからね
丸投げはNG >>265
やはり最初からこのスレは趣旨として正しくなかったと言うことですね
では>>252にも明記しましたように
正しい対象スレッドなどがありましたら、そちらに伺いたいと思います。
どこか趣旨に合致するようなスレッドをご存じないでしょうか?
お手数をお掛けします。 >>264
ウダウダ言い訳せずに作ったほうが早い
プログラムなんて納期を考えなければいつか出来るもの
・入力。ajaxは使わない
・phpでfile_get_contentsでサーバーに保存
・エンコード
・htmlをパース
・配列に突っ込んでソート
・出力
これだけ。
セキュリティの知識不要だから楽勝
で、jqueryもajaxは使わないので移行はスレチ >>268
ありがとうございました
感謝いたします >>268
そこは初心者スレであって制作依頼スレではないのではなくて?
質問者に学ぶ意志が全くないのなら、ランサーズとかに金出して依頼すべき案件に読める ソースコードを見ると、2chのHTMLには、
<div class="number"> タグと、<dt> タグを含む、2種類あって、
処理を分けて書いている
このソースコードの作者は、HTMLのタグを取り出すのに、正規表現を使っているから、
ここをブラウザ内蔵または、jQueryのHTML Parser を使って、
(URL) (日付) (時刻) (ID)の書式4文字列のタグを、取り出せば良いかも
ただ、その例には、<div class="number"> タグしかないから、
<dt> タグを使っているHTMLには、対応できない
それと、同時に取得できるHTMLを、10件までに制限した方がいい。
あまり多いと、2chへの営業妨害とみなされて、訴えられそう
まあ、そのソースコードを修正するよりも、新しく作った方が良さそう
JavaScript, jQueryは、WEBプログラミング板やプログラム板よりも、
この板の方が、やっている人が多い ここにアクセスして、返ってくるHTMLは、
http://hanabi.2ch.net/test/read.cgi/wcomic/1438080242/102
<div class="post" data-date="NG" data-id="102" data-userid="" id="102">
<div class="date">2016/12/24(土) 14:59:51.98 </div>
</div>
(URL) (日付) (時刻) (ID)の書式4文字列のタグは、id="102" より取り出せる。
日付 : 2016/12/24
時刻 : 14:59:51.98
ID : data-userid=""
それらを連結すると、こうなる
http://hanabi.2ch.net/test/read.cgi/wcomic/1438080242/102 2016/12/24 14:59:51.98
今は、jQuery.ajax で、複数のHTMLを取得する方法を、調べている 出力HTMLの仕様差を埋めるなら、datファイルをxhrまたはfetchで取得すればいいんじゃないかね
最も、質問者本人は作る気が全く無さそうだが まったくの初心者です。
お時間のある方、よろしければご教授願えますでしょうか。
if($(this).hasClass("mail")){
if($(this).val() && !$(this).val().match(/.+@.+\..+/g)){
$(this).parent().prepend("<p class='error'>メールアドレスの形式が異なります</p>");
}
}
if条件の&&前の$(this).val()は何を意味しているのでしょうか?
メアドの形式判定なら&&以降だけで足りている気がしてしまいます。 >>274
$(this)だけでは分からない
大抵
$("foo").click(function(){
if($(this).hasClass("mail")){
if($(this).val() && !$(this).val().match(/.+@.+\..+/g)){
$(this).parent().prepend("<p class='error'>メールアドレスの形式が異なります</p>");
}
}
})
のように、何かのイベント元として$(this)が使われる
今回は<foo>が$(this)の対象になる >>275
説明不足で申し訳ありません。イベント部分はこうなっています
$("form").submit(function(){
$("input[type='text'].validate,textarea.validate").each(function(){
//メールアドレスのチェック
if($(this).hasClass("mail")){
if($(this).val() && !$(this).val().match(/.+@.+\..+/g)){
$(this).parent().prepend("<p class='error'>メールアドレスの形式が異なります</p>");
}
}
});
});
ここでの$(this)は
input[type='text'].validate もしくは
textarea.validate で合っていますか? 回答者がアホ。無断なやり取りすんな。
単に未入力の時にエラーにしたくないだけだ >>277
if($(this).val())
で、$(this)に何らかの値が入っていると
条件を満たす ということでしょうか? >>279
なるほど!trueが返ってきて条件成立、なのですね。
皆様ありがとうございました。とても助かりました。 複数のajax処理と、2chの返信から、DOMを構築して、
jQueryでデータを取り出す所を、今研究している
元のHTMLは、ajaxで2chへアクセスして、その返信をHTMLに表示するなど、なかなか凝っている。
こういうループ処理なら、AngularJSを使いたくなってくる
2chで、こういうツールを作れる人は、
プログラム板のVBScriptのスレ主である、ピラフだけかもw
1週間経っても、誰も作れない時は、ピラフに頼むしか無さそう 無名関数のfunction(){}ですが、この'function'を置き換えることってできますか? >>286
いえ、短くする方法を知りたかったので、とてもありがたいです
そんな記述方法があったのですね >>281
はっはっは、そのピラフってやつは無能だった
結局ピラフは作れなかったぞwww 作ろうと思えば作れる
・みんなが使うのが確定している
・共同開発
なら俺も手伝うわ
頑張って作って、数人が使うだけは辛い
しかも2chって結構特殊なフォーマット何だよ。鯖によって変わる ■ このスレッドは過去ログ倉庫に格納されています