为啥在使用 jquery 创建元素后它们在 Chrome 中不可见
Posted
技术标签:
【中文标题】为啥在使用 jquery 创建元素后它们在 Chrome 中不可见【英文标题】:Why after create elements with jquery they'r not visible in Chrome为什么在使用 jquery 创建元素后它们在 Chrome 中不可见 【发布时间】:2012-01-20 05:02:57 【问题描述】:我正在使用 jQuery 以一种简单的方式创建元素。
所以它应该在文档准备好后工作,它在 IE 上运行良好,但不适用于 Chrome、Firefox 或 Safari。 它们已创建,但不可见!
例如,在 chrome 中,当我在文档准备好后包含警报时,单击确定后,元素变得可见,或者当我打开“检查元素”时元素也变得可见。
有谁知道问题出在哪里?
var radio_span = $('<span></span>')
.addClass('jqTransformRadioWrapper')
.attr('id', spanRadio_id) (...etc)
【问题讨论】:
请创建一个jsfiddle.net 演示来举例说明您的问题。单独的代码 sn-p 不足以解决或解决您的问题。例如,您发布的代码没有显示您如何将新元素添加到 DOM 树。如果不提供更多信息,就无法为您提供帮助。 【参考方案1】:var radio_span = $('<span></span>')
.addClass('jqTransformRadioWrapper')
.attr('id', spanRadio_id) (...etc)
这样做是将您的元素放入 radio_span 变量中,要查看该元素,您必须以某种方式使用 append、prepend、html 或任何其他执行此操作的方法将其插入到文档中,如下所示:
radio_span.appendTo('body');
http://jsfiddle.net/adeneo/zKWxp/4/
我现在看到你写的元素在打开检查元素或添加警报时变得可见,这听起来很奇怪,你可能不得不按照 Felix 说的去做,添加更多代码!
【讨论】:
感谢您的回答,但我当然会附加它,否则它在任何浏览器中都不起作用。正如我所说,它适用于所有浏览器,但在使用 chrome 等打开之后就不行了。无论如何我都会改变元素的顺序以及它是如何工作的......也许这是一种延迟......真的不知道。【参考方案2】:不应该是这样吗:
var radio_span = $('#spanid');
radio_span.addClass('jqTransformRadioWrapper');
【讨论】:
不,jQuery 允许方法链接。【参考方案3】:尝试将您的代码包装在:
$(function() ... );
如果这不起作用,请尝试将其包装成:
$(window).load(function () ... );
【讨论】:
以上是关于为啥在使用 jquery 创建元素后它们在 Chrome 中不可见的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript - 使用 innerHTML 创建元素会复制它们。为啥? [关闭]
为啥以下创建 DOM 元素的方式不适用于 IE7 和 IE8 中的 jQuery?