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

我认为问题在于您没有通过正确的 ID 访问。chat_windows_holder 是新创建对象的ID吗?它看起来不像在您的示例代码中。

chat_window_clone_obj 的值是多少?这就是您应该在选择器中使用的值(这就是第二个示例有效的原因)。

于 2011-03-24T14:58:52.800 回答
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 回答