函数.html()
在显示项目时有效。但是当我添加style="display:none"
时,则html()函数不返回任何内容。有这个问题的解决方法吗?感谢?
答案 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时遇到了问题,更改为了类,并且一切正常