【问题标题】:jQuery append() not working on certain elementjQuery append() 不适用于某些元素
【发布时间】:2012-09-05 18:49:41
【问题描述】:

我正在创建的网站是http://www.industrialmerchants.com

我的脚本的问题部分如下:

var collapseAll = document.createElement('img');
    collapseAll.src = collapseAllSrc;
    collapseAll.className = "collapseAll";
    collapseAll.style.cssFloat = "right";

    imUI(".menuBrowser .sideModuleHeader").append(collapseAll);

(imUI 是我正在使用的 noConflict 变量。如果您想知道为什么我使用这种冗长的方法来创建 DOM 元素,那是因为这是我让这段代码工作的最后一次努力。)

出于某种奇怪的原因,没有附加任何内容到选定的 div。 div 肯定会被选中,因为 length 属性返回 1。为了让事情变得更加混乱,我还有另一个具有几乎相同 DOM 结构的“模块”。当我更改选择器以包含两个模块中的 .sideModuleHeader div 时,图像将插入第二个模块而不是第一个模块。有什么想法吗?

【问题讨论】:

  • 它是否可能被附加但不可见?
  • 使用 appendTo 有同样的结果吗?
  • 没有。当我用 firebug 检查 div 时,它不会出现在 DOM 中。
  • 只是反转表达式以使用 appendTo()。结果相同。

标签: javascript jquery dom append


【解决方案1】:

它确实被添加了,但几行之后你就有了:

toggleButtons = imUI(".menuBrowser img").remove(".collapseAll")...

然后立即删除它。

【讨论】:

  • 哦,软糖!我认为 remove() 从 jQuery 选择中删除一个元素,而不是从 DOM 中。谢谢!
  • not() 函数正是我想要的。
【解决方案2】:

看起来您正在将核心 javascript 与 jquery 混合使用。 试试:

var collapseAll = $('<img />').attr('src',collapseAllSrc).addClass("collapseAll");
collapseAll.css({'float':'right'})

-edit:我在 attr 部分有一个 ':' 而不是 ','。

【讨论】:

    【解决方案3】:

    尝试附加子项:

     imUI(".menuBrowser .sideModuleHeader").appendChild(collapseAll);
    

    【讨论】:

    • appendChild() 不是有效的 jQuery 函数。
    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多