Jq 为啥获取不到隐藏DIV 的宽度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jq 为啥获取不到隐藏DIV 的宽度?相关的知识,希望对你有一定的参考价值。

JQ 的 DOM ready 里面的执行函数… 意思是 DOM 都准备好了
html 的显示结果都说明你 <div> 是没有高度的,当然获取不了

所以嘛, 你不要把那 <div> 设定成隐藏状态、CSS 也不可以

function get_height()
var div_h = $('div').height(); // 先在隐藏 div 前拿到高度
$('div').hide(); // 这个时侯才把它隐藏掉
// 不过我建议用 $('div').addClass('hidden'); 比较好操作,你用多了就明白
alert(div_h);
参考技术A hehe
因为你没设置DIV的宽度值咯…… 自适应的都是浮云。JS是取CSS的,什么默认的,自适应的。都是不行的
参考技术B html代码:
<div style="display:none;width:100px;height:100px"></div>

jquery代码:
$(function()
var objHeight = $('div:hidden').width(); //获取隐藏div的高度
alert(objHeight );
)本回答被提问者采纳

JQ轮播

首先是html结构,一个简单的轮播,主要分为三大层:div>ul>li,li里面的img图片。

其次,css样式:div固定住宽高,overflow:hidden;ul的宽度建议是动态获取(下一步会讲是怎么获取);关于li我习惯使用浮动,让他们依次排列,在ul上要记得清楚浮动(clear:both)。

重要的是jquery的方法,主要有用到的有animate(),setInterval(),hover()。在写方法之前,缕清一下动效的逻辑:图片依次循环自右向左滑过,当滑完最后一张时,第一张显示,如此重复

1、获取li的个数length和宽度width 

2、获取ul的宽度:ul的宽度等于所有li的宽度加上克隆的li的宽
首先想到是animate()方法:
animate( properties [, duration ] [, easing ] [, complete ] ),

第一个参数properties:css的属性和值的对象,决定动画的效果,是上下还是左右等;

    第二个参数duration:完成一个动画的时间,默认是400,单位是毫秒;

    第三个参数easing:动画过渡使用的缓动函数,默认是swing(linear,swing),一般不用这个参数;

    第四个参数complete:是指完成动画后执行的操作。

我们的动效是自右向左,所以通过改变ul的margin-left值来实现;

$(‘ul‘).animate({
  ‘marign-left‘: -liWidth*index
},3000,function(){
  if(index==len){
   index=0;
   $(‘ul‘).css({‘margin-left‘:‘0px‘})
  }
}) 

其中index指的是li的索引值,当li的索引值等于li的length值的时候,也就是动画执行到了最后一张,那么直接让ul的margin-left为0,li的索引值也为0。

这样还存在一个隐患,暂时不提。

下一步,当鼠标离开div的时候,图片自动播放。这是要用到hover()和setInterval()

setInterval()在W3C是这样解释的:按照指定的周期(以毫秒计)来调用函数或计算表达式。不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。

 

以上是关于Jq 为啥获取不到隐藏DIV 的宽度?的主要内容,如果未能解决你的问题,请参考以下文章

html中在div里加一个img,为啥overflow不能把img隐藏

常用div操作以及隐藏显示方法

jQuery 如何获取到隐藏元素的高度?或者在dom元素可见性改变时能触发个事件也行。

使用js或jq控制一个div,当滚动到页面顶部的时候固定在顶部,离开可继续滚动吗?

jq 点击按钮显示div,点击页面其他任何地方隐藏div

jq点击显示,再点击隐藏