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

JavaScriptを使ってプログラムを書いています。

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

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

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

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

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

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/12/21 16:20:04

回答2件)

id:mintan No.1

回答回数29ベストアンサー獲得回数2

説明がよくわかりません。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();

とするのもいいですね。

id:nanasemaru46 No.2

回答回数4ベストアンサー獲得回数0

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

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません