码迷,mamicode.com
首页 > Web开发 > 详细

常用JS代码段

时间:2016-07-09 12:07:14      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

1.表单文本框的focus

 1 va($(‘input[type=text]‘));
 2 function va(a) {
 3     for(var i=0;i < a.length; i++){
 4         var  $txt= a.eq(i);
 5         $txt.focus(function(){
 6             if($(this).val() == this.defaultValue){
 7                 $(this).val(‘‘);
 8             }
 9         });
10         $txt.blur(function(){
11             if($(this).val() ==‘‘){
12                 $(this).val(this.defaultValue);
13             }
14         });    
15     }
16 }

此代码用于当表单默认获取用户数据时,比如微信端自动获取姓名,那么就需要增加此段,提升用户体验。如果表单的默认值只是提示功能,使用placeholder即可。

2.实时显示textarea的已写字数

 1 wordsNum();
 2 $(document).bind(‘keyup change‘,function(){
 3     wordsNum();   
 4 });
 5 function wordsNum(){
 6     var texta = $(".texta textarea");
 7     for(var i=0; i < texta.length; i++){
 8         var text = texta.eq(i).val();
 9            var counter = text.length;
10            $(".texta .var").eq(i).text(counter);
11     }
12 }   

此代码多用于textarea,此前只针对该页面单个写,没有考虑到后台可能还需要增加,因此加上for循环遍历。要考虑到后台可能有的操作(数量,移动,顺序等),使代码段更友好,也是我慢慢要提高的。

3.多行省略号

1 //多行省略号
2 $(".words").each(function(i){
3     var divH = $(this).height();        //容器设置height
4     var $p = $("p", $(this)).eq(0);
5     while ($p.outerHeight() > divH) {
6         $p.text($p.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
7     };
8 });

多行省略的使用频率极高给指定文本外裹div.words, 然后设置.words的高度,即可实现。单行省略可以通过css直接实现, overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 而多行代码其实也有 display: -webkit-box; -webkit-line-clamp: 3; overflow: hidden; 其中3代表显示3行,最后一行显示...,但火狐是不支持的。

4.下拉框控制

 1 selectVal();
 2 $(‘select‘).change(function(){
 3     selectVal();
 4 });
 5 function selectVal(){
 6     for(var i=0;i < $(‘select‘).length; i++){
 7         var $sel = $(‘select‘).eq(i);
 8         $sel.siblings(‘.val‘).text($sel.find(‘option[value=‘ + $sel.val() + ‘]‘).text());
 9     }
10 }

下拉框控制在表单中很常见,因为CSS很多样式对select不起作用,所以通常会用一个容器来存储select的值,然后将select隐藏掉。这里使用的是div.val。

5.控制文本框的长度

 1 iWidth();
 2 $(window).resize(function(){
 3     iWidth();
 4 });
 5 function iWidth(){
 6     var lw = $(‘.addr label‘).width();
 7     var il = $(‘.addr input‘).css(‘left‘);
 8     var iw = $(‘.position img‘).width();
 9     var iWidth = lw - parseFloat(il) -iw - 5;
10     for(var i = 0; i <$(‘input‘).length; i++){
11         $(‘input‘).eq(i).css(‘width‘, iWidth + ‘px‘);
12     }    
13 }

此代码使用频率很少,主要用于有不固定元素时,或者使用rem自适应布局。这段代码并没有什么亮点,也不够成熟,只是想说明一个最近碰到的问题。即留点多余空间,防止有些手机端会在处理数据时进行进位,造成布局的错位。

6.设置头像居中

 1 $(function(){
 2     function iconPosition() {
 3         var userIcon = $(‘.userIcon‘);
 4         var iconLeft = ($(window).width() - userIcon.width())/2; 
 5         userIcon.css(‘left‘,iconLeft + ‘px‘);
 6     }
 7     iconPosition();
 8     $(window).resize(function() {
 9         iconPosition()
10     });
11 });

这个是在第一次使用rem布局时,碰到背景宽度不定时,无奈之下使用的。现在想来,那时惯性思维,如今完全可以用css实现了。

使用position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%,-50%); -webkit-transform: translate(-50%,-50%);

结语:

  这是一些小的代码段,其他一些插件的使用,或者大的功能块,单独整理Demo. 现在看以前的很多代码,甚至包括一个月之前的代码,都觉得有很多需要优化的地方,也许这也是一种进步了。在你没有更优化的方案时,即使你现在的代码累赘臃肿,但是能实现再想优化。

  未来一段时间,努力的方向:

  1.拥有整体构建的思维,对应的东西统一起来,代码模块化,同一个模块,那么就尽量做到不写两遍。

  2.静下心来看书,《Javascript DOM 编程艺术》《Javascript权威指南》《javascript高级程序设计》三本书4月份入手,然后现在连最薄的一半都没看完,也许该想一下肉疼的书钱!

常用JS代码段

标签:

原文地址:http://www.cnblogs.com/shifan/p/5655539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!