如何使用jquery读取隐藏的div?

时间:2010-09-29 13:02:25

标签: javascript jquery

$('.slider').each(function(){
if($('li:last',this).width()+$('li:last',this).offset().left-$('li:first',this).offset().left < $('div',this).width()){
//doing something

}
});

我有多张幻灯片,只有一张可见。在这里,我试着在阅读每张幻灯片后做一些事情。问题是,如果隐藏幻灯片,我无法阅读幻灯片。有什么方法可以使用jquery读取隐藏的div。

4 个答案:

答案 0 :(得分:1)

JQuery可以读取隐藏的元素,因为它将隐藏在用户之外但存在于HTML中,但如果您意味着从服务器端将其设置为visible=false,则意味着我不会在HTML中呈现并且JQuery无法确定找到它。

答案 1 :(得分:1)

我认为你试图读取隐藏div及其子对象的维度属性?

由于div是隐藏的,因此维度属性没什么意义。尝试取消隐藏div,并在检查其尺寸及其子尺寸之前添加到其css:position: absolute; left: -5000px;。然后将其恢复为隐藏状态以及之前的位置和左设置。

答案 2 :(得分:0)

假设您没有加载新页面,或者每次更改幻灯片时都删除节点,那么DOM中的div应该可用。如果你知道div的id,你可以使用:

 var divContents = $('#slide2').html()

等。请记住,这将为您提供innerHTML,而不是文本(除非innerHTML中只有文本)。

答案 3 :(得分:0)

如果Gus是对的,你需要:

  • 确定元素是否隐藏
  • 如果元素被隐藏,则将visiblity设置为hidden并显示为block(或inline-block)
  • 读取尺寸值
  • 将样式设置回原始

类似的东西:

$('.slider').each(function(){
  var lastLi = $('li:last',this);
  var firstLi = $('li:first',this);
  var divJQObject = $('div', this);
  var originalStyle = {
    'display': divJQObject.css('display'),
    'visibility': divJQObject.css('visibility')
  };
  if(!divJQObject.is(":visible")) {
    var hiddenButReadableStyle = {
      'visiblity': 'hidden',
      'display': 'block'
    }
    divJQObject.css(hiddenButReadableStyle);      
  }
  if(lastLi.width()+$lastLi.offset().left-firstLi.offset().left < divJQObject.width()){
  // Do Something
  }
  divJQObject.css(originalStyle);
});