成功克隆并附加后,无法使用标识符访问dom元素

时间:2011-03-24 12:37:58

标签: jquery dom cloning

我准备了一个模板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选项卡中看到正确附加所需元素的元素。

3 个答案:

答案 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删除了$()的包装。