jQuery .html()不能用于隐藏的div?

时间:2011-02-03 01:36:01

标签: jquery

函数.html()在显示项目时有效。但是当我添加style="display:none"时,则html()函数不返回任何内容。有这个问题的解决方法吗?感谢?

5 个答案:

答案 0 :(得分:6)

确实有效,请参阅此演示http://jsfiddle.net/jNLqA/

<div style="display: none">
    <p>Test</p>
</div>
<pre></pre>

$('pre').text($('div').html());

答案 1 :(得分:1)

这适用(显示硬编码):

<div id='blah' style="display:none">something</div>

<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>

$(document).ready(function() {
  alert($('#blah').html());
});
</script>

这样做(用jquery改变它):

<div id='blah'>something</div>

<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
$(document).ready(function() {
  $('#blah').attr('style','display:none');
  alert($('#blah').html());
});
</script>

这也有效(用另一种方式改变它与jquery):

<div id='blah'>something</div>

<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
$(document).ready(function() {
  $('#blah').hide();
  alert($('#blah').html());
});
</script>

sooo ...需要更多信息/背景

编辑(更新):

示例代码基于您的评论...再次,这有效:

<?php
class blah {
  var $element_type;
  var $content;
}

$field = new blah();
$field->element_type = 'div';
$field->content = 'something';
?>

<<?php print $field->element_type; ?> class="field-content accordionContent" style="display:none"><?php print $field->content; ?></<?php print $field->element_type; ?>>

<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>

$(document).ready(function() {
  alert($('div').html());
});
</script>

也许$ field-&gt;内容中的内容会破坏你的HTML?缺少结束标签或报价或什么?或者你的jquery选择器可能没有光泽?你的选择器是什么样的?

答案 2 :(得分:1)

我想在这里发帖,因为我还发现如果元素比jQuery代码更高,.html将无法获取隐藏元素的值。

如果我使元素可见,那么代码按预期工作,或者如果我将元素移动到jQuery下面,那么它也可以工作。

这似乎是答案,至少对我而言。

所以最简单的解决方法就是将jQuery代码移到隐藏元素之上,然后.html似乎可以处理隐藏元素。

这似乎可能是jQuery中的一个错误,因为它是相当奇怪的行为。 此外,如果我使用jQuery .hide方法隐藏页面加载的元素,然后.show在获取值之前显示它仍然会失败,如果元素更高,那仍然是陌生的。

罗宾

答案 3 :(得分:0)

答案 4 :(得分:0)

我在使用id时遇到了问题,更改为了类,并且一切正常