javascript - 创建 div 元素时奇怪的 Javascript/JQuery 行为

标签 javascript jquery css dom

    menuPaneToBe.title = document.createElement("div");
    $(menuPaneToBe).append(menuPaneToBe.title);
    console.log(1)
    console.log(menuPaneToBe.title)
    $(menuPaneToBe.title).addClass("menuTitle");
    console.log(2)
    $(menuPaneToBe.title).html("Title"); //Just placeholders, gets changed by circular-view
    console.log(3)

控制台

1 MenuPane.js:12
[object HTMLDivElement] MenuPane.js:13
Uncaught Error: Syntax error, unrecognized expression: [object HTMLDivElement] jquery-1.11.0.min.js:2

为什么标题只是 [object HTMLDivElement] 而不是一个合适的对象?为什么我不能设置类(class)? MenuPaneToBe 是一个自定义标签,设置为显示 block 。

<menu-pane id="menu"></menu-pane>

menu-pane {
    display: block;
    height: 100%;
    width: 30%;
    border-left: 1px solid black;
}

最佳答案

这是一个奇怪的问题,如果 menuPaneToBe 指的是一个 dom 元素(不是 jQuery 对象),那么 title 属性将指该元素的 title 属性,它是一个字符串值。至少在 Google Chrome 中,当您为元素的标题赋值时,它会将其转换为字符串对象。

因此,当您说 menuPaneToBe.title = document.createElement("div") 时,它会将字符串值 [object HTMLDivElement] 分配给 menuPaneToBe.title ,这是一个无效的 jQuery 选择器。

然后当您输入 $(menuPaneToBe.title) 时,它会抛出上述错误。

演示:Fiddle

只需将属性名称从 title 更改为其他名称,例如 title2

var menuPaneToBe = $('#menu')[0];
menuPaneToBe.title2 = document.createElement("div");
$(menuPaneToBe).append(menuPaneToBe.title2);
console.log(1)
console.log(menuPaneToBe.title2)
$(menuPaneToBe.title2).addClass("menuTitle");
console.log(2)
$(menuPaneToBe.title2).html("Title"); //Just placeholders, gets changed by circular-view
console.log(3)

演示:Fiddle

关于javascript - 创建 div 元素时奇怪的 Javascript/JQuery 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680330/

相关文章:

javascript - 使用 Mapbox-gl-js 为多边形填充颜色

javascript - 使用 Angular 调用 href 以打开模态

javascript - 如何获取多选框的所有选定值?

javascript - 每次加载内容后 Ajax 调用都会递增

javascript - 如何检查 jQuery 数据表中特定列的每个值?

html - CSS : Button text moves on click

CSS3 : How to remove white border around flex-container?

javascript - 如何在没有 ID 的图像中更改名称 "data-original"属性名称

html - 没有其他元素会出现在我的带有彩色背景的部分元素中

javascript - 为 JavaScript 对象模块模式设置构造函数