我准备了一个模板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选项卡中看到正确附加所需元素的元素。
答案 0 :(得分:2)
当您尝试按ID选择时,您将获得原始元素 - 与第一个匹配该ID的元素一样。 You should not have duplicate IDs in your document。试试这个:
var chat_window_clone_obj = $("div#chat_window_template").clone();
chat_window_clone_obj.attr("id", "chat_window_clone");
$("#chat_window_clone").doSomething();
答案 1 :(得分:0)
我认为问题在于您无法通过正确的ID访问。 chat_windows_holder是新创建的对象的ID吗?它看起来与您的示例代码不同。
chat_window_clone_obj的价值是多少?这是您应该在选择器中使用的值(这就是第二个示例有效的原因)。
答案 2 :(得分: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;
检查What characters are allowed in DOM IDs?以查找合法字符列表。
我正确分配了动态ID。我稍后用chat_window_clone_obj
删除了$()
的包装。