セレクタの指定上、どの点の問題があるかご助言を頂戴したく存じます。
いいえ, セレクタの指定に問題はありません. スクリプトがDOMの初期化以前に実行されていることが原因です.
おそらくあなたのコードは次のようになっているはずです.
HTML
1<html>
2 <head>
3 <script src="jquery.js"></script>
4 <script>
5$('#hoge>.fuga>.bar').children('div').removeClass('piyo');
6 </script>
7 </head>
8 <body>
9<div id="hoge">
10 <div class="fuga">
11 <div class="foo"></div>
12 <div class="bar">
13 <div class="piyo"></div>
14 <div class="piyo"></div>
15 </div>
16 </div>
17</div>
18 </body>
19</html>
WEBブラウザはHTMLコードを(原則)上から読み込み, script
要素が現れたタイミングでその内容を即座に実行します. 従って, 処理対象のノードよりも上にscript
要素が存在していると, DOMツリーから処理対象を見つけることが出来ません.
この問題を解決するには次の何れかを行います.
- 処理対象のノードよりも後方に
script
要素を配置する.
document
オブジェクトが発するDOMContentLoaded
イベントを待ってから処理を開始する.
jQueryではready
メソッドとしてラップされています.
例えば後者を採用するのであれば, 次のようになるでしょう.
HTML
1<html>
2 <head>
3 <script src="jquery.js"></script>
4 <script>
5$(function(){
6 $('#hoge>.fuga>.bar').children('div').removeClass('piyo');
7});
8 </script>
9 </head>
10 <body>
11<div id="hoge">
12 <div class="fuga">
13 <div class="foo"></div>
14 <div class="bar">
15 <div class="piyo"></div>
16 <div class="piyo"></div>
17 </div>
18 </div>
19</div>
20 </body>
21</html>
NOTE:
これもJavaScriptの有名な落とし穴の一つです.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/23 04:02
2018/03/23 04:05
2018/03/24 06:13