Javascript 在jquery中动态创建元素列表的最佳实践

Javascript 在jquery中动态创建元素列表的最佳实践,javascript,jquery,html,Javascript,Jquery,Html,我肯定有很多关于这个主题的问题和文章,我只是似乎找不到我想要的东西 我有一个表单,其中一个字段不包含一个数字(1到30),我想创建x个元素,其中x是所选的数字,所有元素都应该具有大致相同的HTML结构,只是id不同。这些元素很复杂,我认为应该使用HTML/CSS对它们进行格式化,因为我觉得js应该只包含业务逻辑,有点MVC风格 我想我的问题有两个: 这是一个“哲学”问题:在HTML/CSS中保留“视图”(格式/布局/设计)和在js中保留“控件”(逻辑)是一个好主意吗?我是web开发新手,我不确定

我肯定有很多关于这个主题的问题和文章,我只是似乎找不到我想要的东西

我有一个表单,其中一个字段不包含一个数字(1到30),我想创建x个元素,其中x是所选的数字,所有元素都应该具有大致相同的HTML结构,只是id不同。这些元素很复杂,我认为应该使用HTML/CSS对它们进行格式化,因为我觉得js应该只包含业务逻辑,有点MVC风格

我想我的问题有两个:

  • 这是一个“哲学”问题:在HTML/CSS中保留“视图”(格式/布局/设计)和在js中保留“控件”(逻辑)是一个好主意吗?我是web开发新手,我不确定web开发架构的理念

  • 考虑到我不想在js中设置格式,我如何动态添加/复制HTML元素,同时将HTML保存在它所属的同一个文件中。我的第一个想法是创建尽可能多的元素,隐藏,并在需要时显示正确数量的元素,但这不是最好的方法。。。我的第二个想法是使用jquery.clone()函数,但这会创建重复的id


  • 谢谢

    我认为使用客户端合成框架(比如KnockoutJs,但是还有很多其他框架,比如Ember、Angular)会让您受益匪浅

    这样,您就可以将您的模型(在剔除的情况下是viewmodel)保持在JavaScript中,而只需要担心视图在模板化HTML中的实现

    看看那些很酷的击倒教程,也许这就是你想要的


    我认为使用客户端合成框架(如KnockoutJs,但也有很多其他框架,如Ember、Angular)会让您受益匪浅

    这样,您就可以将您的模型(在剔除的情况下是viewmodel)保持在JavaScript中,而只需要担心视图在模板化HTML中的实现

    看看那些很酷的击倒教程,也许这就是你想要的

    var-inputCount=paraeInt$('input').val()),
    elementMarkup=$('');
    对于(变量i;i
    var-inputCount=paraeInt$('input').val(),
    elementMarkup=$('');
    对于(变量i;i
    为什么不简单地创建一个“模板”元素->克隆它->动态添加一个id?选中此项会很有帮助。。。在初始下载时,尽可能保持页面的轻量级,然后您可以在以后动态添加所需内容。重复ID问题很小,因为在克隆时可以很容易地解决。请尝试使用angularjs。可能有助于解决您的问题。为什么不简单地创建一个“模板”元素->克隆它->动态添加一个id?选中此项将很有帮助。。。在初始下载时,尽可能保持页面的轻量级,然后您可以在以后动态添加所需内容。重复ID问题很小,因为在克隆时可以很容易地解决。请尝试使用angularjs。可能有助于解决您的担忧。
    var inputCount = paraeInt$('input').val()),
    elementMarkup = $('<div class="dynamic-    div"/>');
    
    for(var i; i < inputCount; i++){
     $('body').append(elementMarkup);
    }