0

我一直在开发一个应用程序,我注意到我倾向于在 JavaScript/jQuery 中创建 DOM 对象,然后像这样执行 appendTo('body') :

$list = $('<ul/>', {
    id : "thelist",
    class : "listclass"
}
$list.appendTo('body');
$list.html(whateverAjaxStuff);

我的页面源最终只是一个带有空主体标签的头部。

我只是想知道这种方法是否有任何优点/缺点。我应该在 HTML 中构建基本框架,然后只用 JavaScript 操作 innerHTML 吗?想法?

编辑:想澄清。我只对必须动态生成的东西进行此操作。$list 元素使用 AJAX 加载,用户选择填充另一个列表,等等。

如果有人仍然感兴趣,请链接

4

4 回答 4

2

最好将任何 HTML 放在 HTML 中,而不是 JQuery 中:)。

使用 JQuery 实际构建页面这一事实的不必要开销远远超过了在 JQuery 中构建页面所获得的任何好处,尽管我目前想不出任何好处:)。

于 2012-04-18T18:33:31.637 回答
2

最终,这取决于您的用例。使用 jQuery 会降低性能,但很可能您实际上并没有注意到它。对于许多 DOM 更改,这变得更加重要。如果首先在 jQuery 中执行此操作对您来说快速/容易,那么请务必使用它,然后看看它是否足够快以适合您的场景。如果不是,您可以返回并根据需要进行更改。

一般的经验法则是 - 尽可能少地修改 DOM,因为每次都会导致文档重排。jQuery 可以在幕后隐藏很多操作。

于 2012-04-18T18:39:36.667 回答
2

我不认为上面的其他答案真的足以说服你为什么绝对不应该做你现在正在做的事情。有很多理由这样做;

  1. SEO(搜索引擎优化)
  2. 速度
  3. 禁用 Javascript 的浏览器
  4. WYSIWYG 编辑器(这可能会大大加快您的开发速度,并且它们不会与您的方法一起使用)
  5. 调试和获得帮助要容易得多 - 如果您使用上面的代码在 Stackoverflow 上寻求帮助,很少有人会帮助您。
  6. 让我们再次提一下速度 - 重要的是尽量减少在显示任何内容之前需要发生的处理量,具有大量 JS 处理(广告等)的网站在慢速计算机上浏览非常痛苦。

我想不出任何理由使用 jQuery 构建所有页面,您似乎正在尝试模拟服务器端发生的事情(Ruby、ASP.net、PHP 等)

您可能想从 JS 编辑 DOM。但是完全从头开始构建它是一个非常糟糕的主意!

于 2012-04-18T18:48:35.333 回答
1

除了创建一个重载页面外,它还阻止禁用 JavaScript 的用户访问该页面,他们将看到一个空白页面。

于 2012-04-18T18:38:55.640 回答