1

テンプレート div のクローンを準備し、動的 ​​ID を割り当てて、次のように DOM に追加します。

var chat_window_clone_obj = $('div#chat_window_template').clone();

cloned_element_id = 'chat_window'+dom_id_separator+session_id;
$(chat_window_clone_obj).attr('id',cloned_element_id);
$(chat_window_clone_obj).appendTo("div#chat_windows_holder");

しかし、その後、ID を使用して複製された要素にアクセスできません (firefox で確認しましたが、これはすべてのブラウザーで同じになると確信しています):-

$('div#chat_windows_holder').length // comes 0
$('div#chat_windows_holder').removeClass("hidden"); //does not work

ただし、次のようにアクセスできます:-

$(chat_window_clone_obj).length // works
$(chat_window_clone_obj).removeClass("hidden"); //works

ここで何が欠けていますか?Firefox の HTML タブで、必要な ID が正しく追加された要素を確認できます。

4

3 に答える 3

2

IDで選択しようとすると、元の要素が取得されます。これは、そのIDに一致する最初の要素と同じです。ドキュメントに重複するIDを含めないでください。これを試して:

var chat_window_clone_obj = $("div#chat_window_template").clone();
chat_window_clone_obj.attr("id", "chat_window_clone");
$("#chat_window_clone").doSomething();
于 2011-03-24T12:42:18.143 に答える
0

さて、問題は、新しく複製された要素に割り当てていたdom idに不正な文字を使用していたことです。

このようなもの -

dom_id_separator = '%%--%%'; //  Character % is illegal

var chat_window_clone_obj = $('div#chat_window_template').clone();
cloned_element_id = 'chat_window'+dom_id_separator+session_id;

DOM ID で使用できる文字を確認してください。有効な文字のリストについては。

動的 ID を正しく割り当てていました。chat_window_clone_objwithのラッピングは$()後で外しました。

于 2011-04-20T14:21:46.997 に答える
0

正しいIDでアクセスしていないことが問題だと思います。chat_windows_holder は新しく作成されたオブジェクトの ID ですか? サンプルコードにあるようには見えません。

chat_window_clone_obj の値は? これが、セレクターで使用する必要がある値です (これが、2 番目の例が機能する理由です)。

于 2011-03-24T14:58:52.800 に答える