使用jquery实现更好的循环
A better loop with jquery?
我在javascript中这样做,只是想知道它是否可以使用更多的jquery更优雅地解决?
var tbl="";
for(var i=1; i<13; i++) {
// creating 12 div's, one for each month
tbl += "<div class='month' id='m"+i+"'>" + months[i-1];
// creating 31 divs for each day in month
for(var j=1; j<32; j++) {
tbl += "<div class='monthday' id='m"+i+"d"+j+"'>"+
"<div class='date_header'>"+j+"</div>" +
"<div class='date_info'></div>" +
"</div>";
}
// close month-div
tbl += "</div>";
// insert a clear for each 4th month to get a nice style-break
if(i==4 || i==8 || i==12) {
tbl += "<br style='clear: both'>";
}
}
// finished
$("#friendsinfo").html(tbl);
查找jQuery模板。它们允许你做你正在做的事情,而不需要像那样在循环中手动连接字符串。下面是它如何工作的一个例子:
var template = '<a href="${link}" id="{$id}">${anchor}</a>';
$.template('myTemplate', template);
var data = [];
for (var x = 0; x < something.length; x++) {
var newLink = {
link: something[x].url,
id: 'mylink-' + something[x].id,
anchor: something[x].title
};
data.push(newLink);
}
$.tmpl('myTemplate', data).appendTo('#myContainer');
我已经在几个项目中使用了它们,它们在构建复杂的HTML块方面创造了奇迹。
制作日历时必须记住的事情:
-
每个月有不同的天数
-
闰年2月有29天。
-
计算闰年比大多数人想象的要复杂得多。能被4整除的年份是闰年。但是,能被100整除的年份不是闰年,除非它们也能被400整除。
如果你想编写自己的代码,使用jQuery并不能真正减少你必须使用的循环次数。但是,我建议你去掉这一部分:
// insert a clear for each 4th month to get a nice style-break
if(i==4 || i==8 || i==12) {
tbl += "<br style='clear: both'>";
}
使用好的CSS使行清晰,或者使用表格代替(在这种情况下实际上可能更合适)。
在任何情况下,您实际上可能想要看一下jQuery日期拾取器UI组件。我用过很多次,效果很好。显然,这取决于你是否真的需要一个日期选择器,或者只是想显示一个完整的年历作为一个时间表或其他东西。
http://jqueryui.com/demos/datepicker/或者,如果您只需要显示完整的日历,请查看现有的脚本。这种事别人已经做过一千次了,所以没有必要重新发明轮子。
。试试:http://www.jsmadeeasy.com/javascripts/Calendars/list_test.asp
最后一个想法是,使用PHP或任何您正在使用的语言输出日历可能更有效,并使用CSS隐藏div。然后只需让javascript显示/隐藏日历,而不是每次都构建它。
模数运算符。而不是:
if(i==4 || i==8 || i==12) {
你可以:
if (i%4){
另外,字符串连接速度很慢。我认为将HTML字符串添加到数组并join()它们会更快。可能是错的:)
使用字符串连接制作html标记不是一个很好的类似于jquery的想法=)
我更喜欢为这个日历制作HTML模板并填充数据。你可以使用jQuery模板插件(链接到jquery.com插件页面)
如果稍后需要更改标记,那么更改大量字符串比更改一个html模板要困难得多。
- 让ajax在服务器端的for循环内部或外部更好?Javascript
- JavaScript:有没有更好的方法来使用回调函数做一个for循环
- 有更好的方法吗?在多个函数中重用同一个循环
- Jquery循环遍历数组-必须有更好的方法
- 更好地理解循环中的JavaScript闭包
- 嵌套循环,有更好的方法吗
- 如何更好地编写这个javascript循环
- 当涉及到这些$.each循环时,什么更快/更高效/更好
- 使用超时循环将数据加载到iframe的更好选项
- 更好的实践:消除嵌套循环
- 验证函数,并循环遍历对象以获得更好的性能
- 有没有更好的方法来循环通过一系列的类点击比这个javascript
- 循环对象来检查特定属性是否存在,有没有更好的方法,比如使用下划线
- 当运行for循环时,哪个在coffeescript中更好/更有效
- 在数组中查找对象的更好方法,而不是循环
- 跳出jQuery循环vs原生JS for循环.哪个更好
- 更改对象上的循环以更好地运行
- JavaScript for循环性能-在函数中更好
- 使用jquery实现更好的循环
- $.inArray()循环问题的更好语法