人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

プログラミング初心者ですが、わかる方がおられましたら教えていただけますでしょうか。
JavaScriptを使ってプログラムを書いています。

今、jqueryでDOM要素を取得し、.hide()でその要素を非表示にする操作をしたいと思っています。
ほとんどの要素は操作ができているのですが、DOM要素が一部取れない部分があり、どうもそこは動的にDOM要素が追加されているようなことがわかってきました。このときにも該当のDOM要素を取得し、非表示とする方法があれば教えていただけませんでしょうか。

以下のように書いています。
-----------
$('.classname').hide();

DOM要素がとれない部分は以下のように動的にclassが追加されていて、イベントがうまく動きません、、
$('.classname.classname動的追加').hide();

かといって、動的追加された部分を指定しても動きません。。

説明がよくわからなかったらすみません。

●質問者: cmatoo
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mintan

説明がよくわかりません。DOM操作について質問するなら
対象となるHTMLコードも書くべきでしょう。

追加要素に対して追加以前に設定されたイベント(ハンドラ)が機能しないというのはありますが、要素の操作、つまりセレクタが機能しないというのは聞いたことがありません。

質問の文脈からして

$(".classname .appendclassname").hide();

のセレクタだと

<div class="classname" >
<div class="appendclassname" >動的追加した要素</div>
</div>

こんな感じでしょうか

appendclassnameの部分が追加要素によって可変のため操作が難しいというケースなら

$(".classname div").hide();
$(".classname > div").hide();

などのタグ名で処理するのも手だとおもいます。

または

<div class="classname" >
<div class="appendclassname forhide" >動的追加した要素</div>
</div>

のように追加処理時にhide用のクラス名を追加しておいて
(※クラス名はスペースで区切ると複数設定できます。)

$(".forhide").hide();

とするのもいいですね。


2 ● nanasemaru46

>どうもそこは動的にDOM要素が追加されているようなことがわかってきました
自分が書いたソースではないってことですね。

おそらくですが、現在は要素を取得する処理が完了する前にhideの処理をしていると思います。なので、要素取得完了後にhideの処理をするようにするのが、簡単な方法かとお思います。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ