我正在开发一个插件,它可以获取远程页面的一部分,并保存该部分以便在 jQuery UI 对话框小部件中使用;最初我将 HTML 附加到 DOM 并用 display:none
隐藏它,直到用 $.dialog
调用它,但我意识到我可以将 DOM 节点留在多变的。
有什么理由不这样做吗?这是一个例子:
function makeDialogLink() {
var HTML = $("<div />").load('file.html #container', function() {
$('a#test').bind('click', function(e) {
e.preventDefault();
showDialog();
});
});
function showDialog() {
$(HTML).dialog({
autoOpen : true,
width : opts.width,
modal : opts.modal,
resizable : opts.resizeable,
title : opts.title
});
// some other stuff happens in here, and a setTimout
closeDialog();
}
function closeDialog() {
$(HTML).dialog('close');
}
}
我已经将我实际所做的事情简化了很多,但这很好地概括了我的问题。
正如你所看到的,我已经加载了远程文档的一部分,我将其弹出一个对话框,然后关闭该对话框,但我从来没有直接将获取的 HTML 附加到 DOM ($.dialog
当然,在某个时候会这样做)。
有什么理由不这样做吗?看起来比将 HTML 放入隐藏的 DIV 中然后稍后再获取要好得多。我只是想知道以这种方式在 javascript 中使用闭包是否存在一些我不知道的陷阱。
最佳答案
我想不出这有什么严重的缺点。它可能会慢一点,因为每次您需要对话框时它都会将其重新附加到 DOM,但这并不重要,因为 1) 差异甚至不会明显,除非您弹出数百个对话框 2) 它如果有的话,可能不会比切换 div 慢多少。
这似乎是最好、最干净的解决方案。如果我处于你的位置,我会保留它。
关于javascript - jQuery:是否有任何理由不将 DOM 元素存储在变量中而不是将它们附加到 DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3670202/