首页 新闻 会员 周边 捐助

我是IT小白,一小段公司的js代码,求指正。实现了什么功能?代码写的有哪些缺陷?

0
悬赏园豆:40 [已解决问题] 解决于 2016-06-29 08:58

$(document).ready(function(){       
  var ofh=$(window).height(); 
 var ofw=$(window).width();    
  $('#bottomBody').height(parseInt(ofh) - 125 ); 
  $('#bottomBody').width(parseInt(ofw) - 5 ); 
});

$(function(){
  $(window).resize(function() {   
  var ofh=$(window).height(); 
  var ofw=$(window).width();     
   $('#bottomBody').height(parseInt(ofh) - 125 ); 
   $('#bottomBody').width(parseInt(ofw) - 5); 
  });
  
   $("#topMenu ul li").click( function(){ 
    var indexId =$(this).index();
    $(this).addClass('tabCur').siblings().removeClass('tabCur');
    $("#bottomBody>div").eq(indexId).addClass('cur').siblings().removeClass('cur');
   });  
 
});

js
走在阡陌的路上的主页 走在阡陌的路上 | 初学一级 | 园豆:136
提问于:2016-06-28 10:24
< >
分享
最佳答案
1

有重复代码,jquery对象建议复用。

$(function(){
  var $bottomBody = $('#bottomBody');
  $(window).resize(function() {    
    var $window = $(window);
    var ofh = $window.height();  
    var ofw = $window.width();     
    $bottomBody
      .height(parseInt(ofh, 10) - 125)
      .width(parseInt(ofw, 10) - 5);
  })
  .resize(); //手动触发一次。
  $('#topMenu ul li').click(function(){ 
    var $this = $(this); 
    var indexId = $this.index(); 
    $this.addClass('tabCur').siblings().removeClass('tabCur');
    $('#bottomBody>div').eq(indexId).addClass('cur').siblings().removeClass('cur');
  });  
});

 

收获园豆:40
幻天芒 | 高人七级 |园豆:37207 | 2016-06-28 14:20

你好,谢谢你的回答。我看了之后还有一些不明白

ready方法哪里去了,还有 

$bottomBody
      .height(parseInt(ofh, 10) - 125)
      .width(parseInt(ofw, 10) - 5);是什么用法。。不懂~~求教

走在阡陌的路上 | 园豆:136 (初学一级) | 2016-06-28 15:52

@无敌气质帅气男: 

$(function(){

});

等价于:
$(document).ready(function(){

});
幻天芒 | 园豆:37207 (高人七级) | 2016-06-28 21:21

@幻天芒: thanks

走在阡陌的路上 | 园豆:136 (初学一级) | 2016-06-29 08:58
其他回答(3)
0

上面這塊是bottomBody根據屏幕的寬高修改標籤的寬高

下面應該是個菜單選中的單擊事件

JCdon | 园豆:2 (初学一级) | 2016-06-28 11:25
0

ready和resize事件触发时设置bottomBody的高度为窗口高度-125  宽度为窗口宽度-5

下面那个click是点顶部菜单的选项时更改菜单和bottomBody的样式

ready和resize事件绑定的函数是一样的,所以可以写成单独的函数。

行乎当行 | 园豆:347 (菜鸟二级) | 2016-06-28 11:38
1

实现功能1:  元素 bottomBody 的大小 会随着浏览器窗口大小所变化,变化规律是  bottomBody的高始终是浏览器窗口可视区的高 -125 ,宽是浏览器可视区的宽度-5.

功能2 : 菜单的点击效果变化 ,至于具体怎么变化  你要自己看。

缺陷:1. 代码很明显重复了一段 ,你在 Ready里面执行的代码 和 resize () 执行的代码是一样的 ,为什么不提取出来 ?

     2. 取到的高度和宽度 为什么要用parseInt,你把$(window).height() 这个值打出来看看

丶被遗忘者 | 园豆:18 (初学一级) | 2016-06-28 12:00

很多时候,用parseInt的目的是为了稳妥,有的时候方法调用的比较多,传值传的自己也没把握的时候,用parseInt来保证是数字来进行运算
也算是通用的写法吧。。
还有,谢谢你的回答!!
支持(0) 反对(0) 走在阡陌的路上 | 园豆:136 (初学一级) | 2016-06-28 13:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册