2014-04-12 35 views
0

我有这个功能,我正在使用jQuery的append()函数在论坛板上创建一个新的类别。它工作正常,但我想知道是否有更简单和/或更快的方式,我可以做到这一点。更简单的方法与jQuery

这里是我的代码:

function createCategory() { 
    $(parent).prepend('<div id="CategoryGroup-favourites" class="CategoryGroup"></div>'); 
    $('#CategoryGroup-favourites').append('<h2 class="H">Favourites</h2>') 
           .append('<div class="DataTableWrap"></div>'); 
    $('#CategoryGroup-favourites .DataTableWrap').append('<table class="DataTable CategoryTable"></table>'); 
    $('#CategoryGroup-favourites table').append('<thead></thead>') 
             .append('<tbody></tbody>'); 
    $('#CategoryGroup-favourites thead').append('<tr></tr>'); 
    $('#CategoryGroup-favourites tr').append('<td class="CategoryName"></td>') 
           .append('<td class="BigCount CountDiscussions"></td>') 
           .append('<td class="BigCount CountComments"></td>') 
           .append('<td class="BlockColumn LatestPost"></td>'); 
} 

任何帮助,让这个简单的将是很好。

+0

您可以在javascript中使用多行字符串,并在每行末尾加正斜杠。如果这就是你的意思。 – Bryan

+0

@Bryan不需要。我的问题更倾向于jQuery方面的事情,因为我收集的方法是削减代码。因此,为什么我没有标记Javascript。 – Spedwards

+0

创建一个新元素然后附加到它是没有意义的,为什么不一次创建标记并将其预先添加到“父”? – Bryan

回答

0

@Bryan在他的评论中得到的是,既然你是用jQuery添加任意的HTML,那么为什么不一次呢?你反复添加一个元素,然后选择它,加入它,然后选择加上,等等。相反,简单地构建新的div的全部,然后前置一个:

function createCategory() { 
    var newDivHtml = '\ 
    <div id="CategoryGroup-favourites" class="CategoryGroup">\ 
    <h2 class="H">Favourites</h2>\ 
    <div class="DataTableWrap">\ 
     <table class="DataTable CategoryTable">\ 
     <thead>\ 
      <tr>\ 
      <td class="CategoryName"></td>\ 
      <td class="BigCount CountDiscussions"></td>\ 
      <td class="BigCount CountComments"></td>\ 
      <td class="BlockColumn LatestPost"></td>\ 
      </tr>\ 
     </thead>\ 
     <tbody></tbody>\ 
     </table>\ 
    </div>\ 
    </div>'; 

    $(parent).prepend(newDivHtml); 
} 

这里有一个sample jsfiddle与这两个版本的createCategory。如果您在运行后检查元素,它们应该是相同的。

0

jQuery的动态创建的元素

$("<div/>",{ 
    "class" : "someelement", 
    // .. you can go on and add properties 
    "css" : { 
     "color" : "red" 
    }, 
    "click" : function(){ 
     alert("you just clicked me!!"); 
    }, 
    "data" : { 
     "foo" : "bar" 
    } 
}).appendTo("#container"); 

创建DIV并设置ID,等级,CSS,事件对飞 这是去如果youre设置多个属性的方式。比传递长串更清洁。