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

私的良スレ書庫

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

元スレjQuery ライブラリ 総合質問所 vol.4

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
551 : Name_Not - 2015/09/02(水) 11:33:53.76 ID:???.net (+10,-30,-182)
>>549
すみません。
四角内に星をまばらかつ定位置に置き、ボタン等で配置パターンを切り替えます。
星の数は変わりません。

・HTML
<div id="sora">
 <span id="#a01">☆</span> <span id="#a02">☆</span> ~
</div>

・CSS
#sora {
 width: 100%; height: 200px;
 position: relative;
}

#sora span { position: absolute; }

・ブロックA
#a01 {top: ○%; left: ○%;}
#a02 {top: ○%; left: ○%; color: #○;}
 ~

・ブロックB
#a01 {top: ○%; left: ○%;}
#a02 {top: ○%; left: ○%; color: #○;}
 ~

・ブロック~
と、このブロックの辺りを何とかならないかと思いまして。
552 : Name_Not - 2015/09/02(水) 11:49:09.59 ID:???.net (+62,+29,-2)
>>550
すみません、どういうことでしょうか?
553 : Name_Not - 2015/09/02(水) 12:22:25.30 ID:???.net (+3,-30,-247)
<div id="pattern1">
 <span id="#a01" style="top: ○%; left: ○%;">☆</span>
 <span id="#a02" style="top: ○%; left: ○%;">☆</span>
 ~
</div>

<div id="pattern2">
 <span id="#a01" style="top: ○%; left: ○%;">☆</span>
 <span id="#a02" style="top: ○%; left: ○%;">☆</span>
 ~
</div>

・・・

を全てdisplay: none;にし、$('#sora')の子をその都度
$('#pattern○')の子と入れ替えるなど、配置をHTMLに書けば簡単ですが
なるべくレイアウトはCSSに書きたい(書くべき?)です。
とはいえ548のようにCSSファイルが増えるならこちらのほうがいいです。
554 : Name_Not - 2015/09/02(水) 13:09:33.79 ID:???.net (+16,-30,-304)
html
<div id="box"><img id="a01" class="c01"> <img id="a02" class="c01"></div>

css
#a01.c01{top:Ypx;left:Xpx;}/*IDがa01かつclassがc01*/
#a02.c01{top:Ypx;left:Xpx;}/*IDがa02かつclassがc01*/
#a01.c02{top:Ypx;left:Xpx;}/*IDがa01かつclassがc02*/
#a02.c02{top:Ypx;left:Xpx;}/*IDがa02かつclassがc02*/

でボタンをクリックした時にクラス名を渡して
cl = クラス名;
$('#box img').each(function(){
$(this).removeClass(function(index, className) { return (className.match(/\ba\S+/g) || []).join(' '); });
$(this).addClass(cl);
});
ここまで書いて囲んでるボックスのclassかID書き換えた方が楽な気がしてきたけどもう眠い
555 : 549 - 2015/09/02(水) 14:52:46.53 ID:???.net (+12,-30,-265)
>>551
それなら理解できるw

>>554
> ここまで書いて囲んでるボックスのclassかID書き換えた方が楽な気がしてきたけどもう眠い
CSSでやるならそれが正解。

こんな感じだね。

<div id="sora" class="block-a"> ← ここをblock-b、block-cに切り替えるだけ。
 <span id="#a01">☆</span> <span id="#a02">☆</span> ~
</div>

・ブロックA
.block-a #a01 {top: ○%; left: ○%;}
.block-a #a02 {top: ○%; left: ○%; color: #○;}

・ブロックB
.block-b #a01 {top: ○%; left: ○%;}
.block-b #a02 {top: ○%; left: ○%; color: #○;}
556 : Name_Not - 2015/09/02(水) 15:04:46.66 ID:???.net (+5,-30,-118)
>>554
一般的に、jQueryを使ったコードでeachは
あまり使わない。

これでいいんじゃないかな?

cl = クラス名;
$('#box img').removeClass(function(index, className) {
  return (className.match(/\ba\S+/g) || []).join(' ');
}).addClass(cl);

removeClassの中もなんか気持ち悪けど、
ここをどうにかしようと考えたら
結局ボックスのclassを変えたほうがいいってことになる。
557 : Name_Not - 2015/09/02(水) 15:12:22.11 ID:???.net (+11,-30,-177)
ちなみに、一般的にレイアウトはCSSでやるのは正しいのだが、
この例ではゲームで敵の位置をランダムに配置するのと同様に
JavaScriptでやるのもありなんじゃないかとは思ってる。

もちろん切り替えるスタイルの数が固定であるならば
CSSでやって問題ないけれどね。

あと、CSSの記述を効率化したいならSass(Scss)を使うのがおすすめ
scssで書いてCSSに変換して出力したものを配置して使う。

こんな感じで書ける。

・ブロックA
.block-a {
 #a01 {top: ○%; left: ○%;}
 #a02 {top: ○%; left: ○%; color: #○;}
}
558 : Name_Not - 2015/09/02(水) 18:58:24.75 ID:???.net (+7,-27,-52)
>>555
具体的でよくわかりました。
各spanにclass="block-a"はやってみてましたが、逆の発想はありませんでした。
555のほうが記述が少なく処理も自然でいいです。完璧でした。

>>557
やりたいことはまさしくそのネストでしたが
今回はコンパイルのデメリットから普通のCSSでいきます。

みなさん、ありがとうございました。
559 : Name_Not - 2015/09/04(金) 13:13:46.63 ID:???.net (+9,-30,-111)
textarea id="id_text"に入っている文字列
"  文字列1 \n \n\n   文字列2 "  (例)
を改行でsplitして、空文字列以外のものだけを配列に取り出すことは出来たのですが、
var Ary = $('#id_text').val().split('\n').filter(function (v) { return v !== '' });
これだと、空白からなる文字列は除去できません。
また、取り出した文字列の前後に空白が残っています。この空白も取り除く方法を教えてください。
ループで回すんでは無くて上の式に何か追加すれば可能でしょうか?
560 : Name_Not - 2015/09/04(金) 19:16:40.58 ID:???.net (+23,-30,-76)
>>559
.map(function(v){ return v.trim() }) を追加する
var Ary = $('#id_text').val().split('\n').map(function(v){ return v.trim() }).filter(function(v){ return v !== '' });
561 : Name_Not - 2015/09/05(土) 00:15:11.75 ID:???.net (+31,+5,+1)
>>560
ありがとうございました
562 : Name_Not - 2015/09/05(土) 21:03:18.46 ID:???.net (+14,-30,-75)
属性をメソッドにできますか?例えば

<div id="hoge" method="hide"></div>



$('#hoge').hide();

と。かなり特殊で変は承知ですがそこをあえて。
563 : Name_Not - 2015/09/06(日) 00:42:43.97 ID:???.net (-1,-29,-11)
>>562
.hide()を実行した時の定義はどういう風に記述するつもり?
564 : Name_Not - 2015/09/06(日) 07:49:53.88 ID:???.net (+32,-30,-17)
>>562
$("#hoge").attr("data-method", function() { ... });
とかじゃないの多分

要素に直接書くのは知らん
565 : Name_Not - 2015/09/06(日) 08:15:13.72 ID:???.net (+33,-30,-45)
>>562に必要なのはCSSにだろ?

<div id="hoge"></div>

#hoge { display: none }
566 : Name_Not - 2015/09/06(日) 08:28:30.83 ID:???.net (+57,+29,-20)
呼び出し例みるとプラグイン作ってそれを呼び出しているみたいにも見える

http://yyengine.jp/blog/jquery/jquery-plugin-5step/
567 : Name_Not - 2015/09/06(日) 15:39:24.92 ID:???.net (+62,+29,-3)
>>565
それだとここで質問の意味ないよ
568 : Name_Not - 2015/09/06(日) 15:54:41.96 ID:???.net (+16,-29,-37)
jQueryじゃない話題はこちらへ

+ JavaScript の質問用スレッド vol.125 + [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/hp/1436910657/
569 : Name_Not - 2015/09/06(日) 16:13:55.38 ID:???.net (+57,+29,-30)
どれだけjQueryに御執心なんだこの人はw
570 : Name_Not - 2015/09/06(日) 22:45:36.45 ID:???.net (+95,+29,-2)
>>564
要素に直接書きたいのです。

みなさんありがとう。
571 : Name_Not - 2015/09/06(日) 22:46:21.09 ID:???.net (+0,-29,-16)
>>562
methodがhideならhide()実行するようにif文で書けば良いんじゃない?
572 : Name_Not - 2015/09/06(日) 22:48:16.18 ID:???.net (+70,+29,-18)
>>570
直接書いてそれをメソッドとして実行できるとは思えない。
573 : Name_Not - 2015/09/06(日) 23:07:05.83 ID:???.net (+9,-30,-131)
同じくdata-の質問なのですが、i要素の脇に属性値を表示させ、
後にjQで動的に変えて表示させたいのですがうまくいきません。

【HTML】 <i data-myattr="abc">...</i>
【CSS】 i::after {content: attr(data-myattr);}
【jQ】 $('i').data('myattr','def');

abcは表示しますがjQで変えた後もabcのままです。
動的に表示を反映するにはどうしたらいいでしょうか。
574 : Name_Not - 2015/09/06(日) 23:35:14.20 ID:???.net (+4,-30,-157)
>>573です。半分自己解決しました。attrを使ったら反映しました。

【HTML】 <i data-myattr="abc">...</i>
【CSS】 i::after {content: attr(data-myattr);}
【jQ】 $('i').attr('data-myattr','def');

title属性にattrメソッドで取得・設定などはやってみていたのですが
data-はdataメソッドで取得・設定と頭が固定してました。

理由(DOM関係でしょうか)や方法としていいのか悪いのかわかりませんが
動作的には結果オーライです。
575 : Name_Not - 2015/09/07(月) 18:03:41.51 ID:???.net (+36,-30,-41)
うん、そのやり方は正しいよ。
data-xx属性は.data("xx")の取得の初期値にしか過ぎず、
.data("xx", "aaa")での設定の際には属性とはまた違ったところに値が保存される。

なので、属性を直接変えたいなら.attr()を使うべし。
576 : Name_Not - 2015/09/07(月) 19:39:35.26 ID:???.net (+62,+29,-40)
>>575
どうもjQのキャッシュがあって動作の違いが生じてるようですね。

不安げに使ってるのとでは心情が違いますので心強いです。
明確なお言葉ありがとうございます。
577 : Name_Not - 2015/09/08(火) 13:47:55.80 ID:???.net (+43,-30,-79)
web制作初心者です。質問させてください。

jquery.flicksimple.js
http://www014.upp.so-net.ne.jp/makog/js/jquery_flicksimple/
を用いてスマホサイトで横幅100%での配置を実装しようとしているのですが
横1列に並ぶ<li>の数がデータベースと連動していて定数ではありません。

そのためスクロール領域である<ul>のwidth指定を
[ <li>の数 ] * [ <li>1つの幅px]
みたいな指定ができれば、と思うのですが
どう指定していいのかわかりません。。

どなたかご教授ください。
578 : Name_Not - 2015/09/09(水) 10:34:33.79 ID:???.net (-1,-29,-20)
$.browser.msieみたいな判定が廃止された理由は何ですか?
廃止しても結局は同じような判定が必要になりますよね?なのに廃止する必然性が分かりません。
579 : Name_Not - 2015/09/09(水) 11:23:31.91 ID:???.net (+52,+25,-1)
必要にならないから
580 : Name_Not - 2015/09/09(水) 12:35:28.25 ID:???.net (+13,-29,-26)
>>579
browserに応じて処理内容や画面のデザインを変えたい場合、browserの種類が分からないのにどうするんですですか?
581 : Name_Not - 2015/09/09(水) 12:48:37.22 ID:???.net (+57,+29,-35)
jQueryは特定のブラウザの種類に応じた処理の切り分けに使うライブラリではないので、
そういうのが必要なら別のライブラリを併用してね
582 : Name_Not - 2015/09/09(水) 12:57:34.39 ID:???.net (+73,-14,-7)
要するにjq作っている人達は正確なbrowserの種類判定を実装するのが面倒になったんだろうな。無責任だろ。
583 : Name_Not - 2015/09/09(水) 13:32:40.11 ID:???.net (+9,-20,-20)
>>580
browserに応じて処理内容や画面のデザインを変えないし、変えてはならない。
584 : Name_Not - 2015/09/09(水) 13:33:03.90 ID:???.net (+46,+18,-2)
>>582
釣りですか?
585 : Name_Not - 2015/09/09(水) 13:53:13.13 ID:???.net (+67,+29,-25)
>>582
jQuery作ってる人がそんな責任を負わないし、レガシーな機能はどんどん切り捨ててスリムにしていくべきだよ
586 : Name_Not - 2015/09/09(水) 14:07:19.41 ID:???.net (+51,+21,-25)
>>568
いやいや、jQueryの話題だろw
587 : Name_Not - 2015/09/09(水) 14:16:17.35 ID:???.net (+94,+29,-13)
むしろみんないかにブラウザの差をなくすか、しなくて済むようにしてるのに
その必然性が分からん。特殊分野なの?
588 : Name_Not - 2015/09/09(水) 14:40:06.76 ID:???.net (+75,+29,-29)
>>587
>むしろみんないかにブラウザの差をなくすか、しなくて済むようにしてるのに
現実はブラウザ自体に差がありそれは永久に解消されないから、htmlを作る側はそういう手間のかかる作業に追われる問題も解消しない。
589 : Name_Not - 2015/09/09(水) 15:41:30.85 ID:???.net (+42,-29,-79)
>>586
> いやいや、jQueryの話題だろw

jQueryの話題じゃない。
ブラウザの判別はUserAgentを使うのだから、
jQueryは関係ない。
590 : Name_Not - 2015/09/09(水) 19:33:57.94 ID:???.net (+57,+29,-23)
いつどんなタイミングでブラウザが増えるかわからんのだし、
本体とは分離しておくのが無難やね
592 : Name_Not - 2015/09/09(水) 23:02:56.92 ID:???.net (+13,-30,-80)
とりあえず先に無駄なところを修正しておこうか?

$(function(){
 $("div").hide();
 $("input[type='radio']").click(function() {
  if(this.checked) {
   $(this).next("div").show(500);
  }
 });
})
593 : Name_Not - 2015/09/10(木) 00:16:43.24 ID:???.net (+11,-16,-54)
gifアニメ画像の再生完了のイベントを取ることはできないでしょうか。
setTimeoutで一定時間の後、次の処理に進むようにしてみましたがパソコンと
スマホでタイミングがずれてしまいます。
594 : Name_Not - 2015/09/10(木) 05:19:45.15 ID:???.net (-6,-30,-149)
>>591
.next() は次の(隣の)要素なんだわ
labelに囲まれてるんだから、.隣では辿りつけないよね
ついでに言っておくと、.next()のセレクタはそのセレクタに合うのを探しに行くんじゃなくて、
隣のものの中からセレクタに合うものを絞り込むためにあるんよ
<div></div><span class='a'></span>
<div></div><span class='b'></span>
<div></div><span class='c'></span>
<span></span><span class='b'></span>

$('div').next('.b')と$('div').next() をコンソールにだしてみればわかると思う

親の要素に行ったり、ある条件に合うまで探すみたいなのは、用意されているから探してみておくれ
595 : 592 - 2015/09/10(木) 06:21:26.53 ID:???.net (+3,-30,-229)
少し足りなかったな。こうだな。

jQueryを使ったコードでは、
パフォーマンスが気になる部分とか以外では、
原則としてeachやifは使わないんだわ。
(jQueryプラグインを作るときにはeach使うけど)

繰り返しとか比較っていうのはコードを複雑にする原因で、
それを減らせるのがjQueryの関数型プログラミングの機能だから

$(function(){
 $("div").hide();
 $("input[type='radio']").click(function() {
  $(this).filter(':checked').next("div").show(500);
 });
})
596 : 591 - 2015/09/10(木) 22:23:58.41 ID:???.net (+3,-30,-246)
こんばんわ
592さん594さんお返事感謝です。
592さんの言うとおり無駄なソースが多すぎましたね。
594さんの「labelに囲まれてるんだから、隣では辿りつけないよね」の言葉で今回の問題が理解できました。
IEの開発者ツールのDOMExplorerで見てみると階層が違いましたね。

以下が修正後になりました。
<script type="text/javascript">
$(function(){
$("div").hide();
$("input[type='radio']").click(function(){
$("div").hide(500);
$(this).parent("label").nextUntil("label","div").show(500);
});
});
</script>

最初の想定より大分短いコードになって満足です。
ラジオをクリックした際、一度全て非表示にする処理を入れたのが短縮に繋がりましたね。
最初はラジオボタンのセレクタを全て取得してチェックされているかどうか確認してshowかhideを設定するつもりでしたが
ものすごく冗長になるとおもい今回のようにしました。
アドバイス感謝します。
597 : 591 - 2015/09/10(木) 22:27:45.70 ID:???.net (+36,+8,-4)
ちなみに595の方法でやってみましたがなにかうまくいきませんでした。。
598 : Name_Not - 2015/09/12(土) 22:31:33.24 ID:???.net (+57,+29,-7)
なんでブラウザの判別とか言ってるのだ
アンカ負ってみ
599 : Name_Not - 2015/09/12(土) 22:43:08.56 ID:???.net (+14,-17,-20)
http://jqueryui.com/draggable/

WindowsではできましたがAndroidでは動きません。
スマホでも動かす方法教えてください。
600 : Name_Not - 2015/09/12(土) 23:31:45.08 ID:???.net (+61,+29,-27)
>>577は、いい質問だと思うぜ?
だれか.lengthでも使って答えてあげなよ(俺はめんどくさい)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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