2010九月29
jQuery 操作option
之前写过一篇日志,《js操作option》,趁着这次系统重构,怎么看原来的实现方式都不爽。因为页面中使用了jQuery,于是就想用jQuery把原方法重写一下。因此也就有了本篇日志:jQuery操作option。
js清空option
之前清空option ,我的做法是遍历现有option,将其每个子元素都置空即可。现在使用jQuery来实现,我们只需要调用其支持的empty方法即可。
empty()
删除匹配的元素集合中所有的子节点。
再加上,我们要设默认值,所以此处清空select下所有option的方法,使用下面语句即可:
$('#selectId').empty().append( $("<option>这里放默认值</option>") );
js动态创建option
之前的做法,是借用其中间函数,来实现遍历Ajax返回的json对象。并使用new Option来创建option.现在我使用如下方法处理
for(var i = 0,len = jsondata.length; i<len; i++){
$('#selectId').append($("<option value='"+jsondata[i].val+"'>"+jsondata[i].txt+"</option>"));
}
$('#selectId').append($("<option value='"+jsondata[i].val+"'>"+jsondata[i].txt+"</option>"));
}
省去了一个看着繁重的中间函数,还减少了代码。最主要的是维护起来清晰易懂。^_^
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2010/09/29/1935/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
后面那个生成的代码,为什么不用createNode来实现?会不会性能更好更安全?
我记得IE下innerHTML的效率不高。append貌似调用的就是innerHTML
[回复]
@ayanamist
这个效率问题我确实没有想,因为我这个数组本来也不大,
另外,innerHTML和createNode 效率,貌似也不会差很多吧?当然这个我没有做过试验。嗯。
[回复]
@simaopig
查了一下,innerHTML要快一些。
http://www.quirksmode.org/dom/innerhtml.html
也有比原生方法更快的
http://blog.stevenlevithan.com/archives/faster-than-innerhtml
[回复]
@ayanamist
呵呵,好的。我晚上回家看一下,谢谢啦。
PS:优化是无止境的,呵呵。
[回复]
这篇文章就不评论了,顶一下,然后再阅读其他文章。
[回复]
你这个重构还不如不重构
[回复]
@卡卡龙
没把这个当成重构。。只是正好改版,反正也用了jQ,就顺手改的。
[回复]