下記のような形で200をクリックしたら<li>に200を持つ<ul>以外の<ul>の色変えをしたいと思っています。
<button id="100">100</button> <button id="200">200</button> <button id="300">300</button>
<div>
<ul>
<li>100</li><li>150</li>
</ul>
<ul>
<li>200</li><li>250</li>
</ul>
<ul>
<li>300</li><li>350</li>
</ul>
・
・
</div>
このようなhtmlで200のボタンを押したとき<li>中身が200の<ul>はそのまま、他の<ul>を色変えする形です。
$('button#200').click(function(){
$('ul li').each(function(){
var siz = $(this).text();
if(siz == '200'){
$(this).parent().css('background','#ccc');
}
})
});
200を押したとき<li>200を含む<ul>を色変えはできましたが、それ以外を変える場合がわかりません。
どうかご教授お願いします。
No.3ベストアンサー
- 回答日時:
No.2です。
よくわかってませんが、「200」の他にも100、300のボタンがあるみたいなので、そちらでも同じことをなさりたいのかと勝手に想像して、
イメージのみのサンプルを。(なさりたいことと合致しているかはわかりませんが、こんな方法もあるよというサンプル)
(全角空白は半角に)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript" src="js/jquery-1.5.2.min.js"></script>
<script type="text/javascript">
<!--
$(function(){
$("#buttons>button").click(function(){
var val = $(this).text();
$("#lists>ul").each(function(){
var f = false;
$(">li" ,this).each(function(){ f = f || $(this).text()==val; });
$(this).css("backgroundColor", f?"":"#ccc");
});
});
});
//-->
</script>
</head>
<body>
<div id="buttons">
<button>100</button>
<button>200</button>
<button>300</button>
</div>
<div id="lists">
<ul><li>100</li><li>150</li></ul>
<ul><li>200</li><li>250</li></ul>
<ul><li>300</li><li>350</li></ul>
</div>
</body>
</html>
ありがとうございます!
まさにやりたい動作でした。
まったく想像していないやり方で、コードも短く大変勉強になりました。
それぞれの役割を勉強して理解したいと思います。
説明不足のなか、本当にありがとうございました。
No.2
- 回答日時:
No.1です。
最初のご質問と補足のコードではやっている内容が少し違いませんか?
最初のコードは、値が200だったら背景色を変える(そうでない時は何もしない)です。
それなので、No.1の回答もそのようになっています。
補足のコードのように、LIの値に応じてULの色を変えていると、途中での値がなんであろうと、結局は、最後のLIの値によって色が決まることになりませんか?
何をやりたいのかはよくわかりませんが、補足のようなコードにしたければ、UL単位で子要素のLIの値を一括で評価して背景色を決めるようにしなければならないのではないでしょうか。
説明がわかりずらく、申し訳ありませんでした。
おっしゃる通り最初のコードは200だったら色を変えるものです。(やりたいこととは真逆ですがここまではできたという説明でした)
<li>の中に200を持たない<ul>の色を変えるということが目的です。
>補足のコードのように、LIの値に応じてULの色を変えていると、途中での値がなんであろうと、
>結局は、最後のLIの値によって色が決まることになりませんか?
その通りです。こうなってしまうので解決法がわからず再度補足させていただきました。
ご回答をヒントにもう少しがんばってみます、
ありがとうございました。
No.1
- 回答日時:
設定されている値がとり得る可能性によって考えが変わるかと思いますが…
◇方法1
自分以外に値が200のものがないとあらかじめわかっているなら、親要素(UL)の兄弟要素の背景を設定すればよいと思われます。
$(this).parent().siblings("ul")
で、他の兄弟要素(UL要素)を取得できるはずです。
◇方法2
自分以外にも値200のものが存在する、あるいは値が動的に変わるような場合は、ご質問文にある通りにそれぞれのulの子要素liを調べて値200のものがあれば何もしない、なければ背景色をセットする。
具体的には、上記で取得した各UL要素についてループ(あるいはeach)で、子要素LIに値200のものがなければ背景色を設定する。
みたいな方法ではいかがでしょうか。
この回答への補足
ご回答ありがとうございます。
値はランダムにあるので方法2になります。
以下のようにしてみたのですが、
$('ul li').each(function(){
if($(this).text(); == '200'){
$(this).parent().siblings("ul").children().each(function(){
if($(this).text()=="200"){
$(this).parent().css('background','#fff');
}else{
$(this).parent().css('background','#ccc');
}
})
}
})
200がない<UL>の背景色を変えるところで、すべて色が変わってしまいます。
<ul>
<li>200</li><li>250</li>
</ul>
200がある<UL>の所でも、250など違う値が入っているのでそれを拾って、この<UL>まで色が変わってしまうようです。
条件の仕方などやり方が違うのでしょうか・・
いろいろ試してみたのですがうまくいきませんでした。
この場合どう変えたらよいのか、申し訳ありませんがお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
JavaScriptのクッキーによるリ...
-
jquery ドロップダウンメニュー...
-
jQueryでの開閉メニューについて
-
jQueryのeqで最後からn番目以降...
-
多階層ドロップダウンのスマホ...
-
「jQuery」アコーディオンメニ...
-
jquery 親要素以外の取得
-
jQuery多層式アコーディオンメ...
-
MAX関数を使ってからLEFT JOIN...
-
JSPでの画像ファイル表示
-
背景色を透明化
-
iframe内のリンクが飛ばないの...
-
eclipseでcssを使うためには?
-
javascript 神経衰弱 表に返...
-
オンマウス時に別画像を上に重...
-
textareaに画像を表示したい
-
複数の要素へ appendchild でき...
-
JavaScriptで変更した属性の元...
-
createElementで作成した要素を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
「jQuery」アコーディオンメニ...
-
jQueryのeqで最後からn番目以降...
-
jquery ドロップダウンメニュー...
-
クリックした<a>タグのみにClas...
-
javascriptでフォーカスを当て...
-
タブ切り替えの初期表示について
-
Jquery の slide.toggle で要素...
-
jQuery タブメニューへのダイ...
-
大量のチェックボックス状態取...
-
javascriptでEnterキーをtabキ...
-
展開メニューの修正
-
jQueryでネスト構造の<li>がク...
-
javascriptで、クリックしたら...
-
ネストされたチェックボックス...
-
jQuery アコーディオンメニュー...
-
jQueryのhide,showで中の要素が...
-
gridstack.jsについて教えてく...
-
戻ってきた時ツリーメニューが...
-
どの<li><a> が押されたか判別...
おすすめ情報