我尝试使用jQuery创建一个非DOM DOM元素(我避免直接通过jQuery接触DOM,因此我会在一定程度上对待它们的包装集和DOM元素)并将.tabs()函数应用于它,并且稍后才将该元素添加到DOM中。这些标签类型的工作和种类没有。看起来好像(从猜测)或许事件处理程序已经搞乱了。点击一个标签突出显示,但什么也没做。非当前选择的标签内容全部显示。这是一个奇怪的效果。为什么一些jQuery UI操作在非DOM DOM元素上失败?
我只改变了一件事 - 在调用.tabs()之前,我先将无形元素附加到实际的DOM树中。一切正常。
这实际上解决了我当前的实际问题,因为我做了一些更多的阅读,并意识到我制作非实体元素的动机是基于对JavaScript和DOM呈现之间的浏览器执行效果的细微误解。 (我没有意识到渲染器在JavaScript完成之前不会重新获得控制权,这让我们回想起来更有意义 - 我确定一种真正的多线程方法将会是浏览器制造商的并发恶梦...... )
无论如何,这仍然留下了一个非常有趣的理论问题。这是怎么回事?无形元素和附着元素有什么区别? jQuery UI如何发挥呢?我想更深层次地理解这些内容。
(我无法找到与一些粗略的谷歌搜索任何东西。不要惊讶,因为它似乎是,当你纠正误解我了,对无形要素运行的jQuery UI的操作在实践中是非常没有意义的。)
下面是一些代码:
// doesn't work right
var disembodied = $('<div>.......html goes here....</div>');
$(disembodied).tabs();
$('div#receptacle').append(disembodied);
// does work right
var disembodied = $('<div>.......html goes here....</div>');
$('div#receptacle').append(disembodied);
$(disembodied).tabs();
好吧,酷!这解释了一切。谢谢。 – 2010-07-23 19:04:04