2011-02-03 3 views
1

Функция .html() работает, когда элемент отображается. но когда я добавляю style="display:none", функция html() ничего не возвращает. Есть ли обход этой проблемы? благодаря?jQuery .html() не работает со скрытыми divs?

+0

Я думаю, что вы не правы. Функция 'html' должна работать независимо от CSS. – tvanfosson

+0

Это не ваша проблема. Можете ли вы добавить какой-то контекст или селектор, который вы используете? – meagar

+0

Мне кажется, вам нужно опубликовать код, который дает вам ошибку. Я могу отобразить: none a div и все равно получить $(). Html(), чтобы вернуть содержимое html, без проблем. –

ответ

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> 

ооочень ... нужно больше информации/контекст от вас

EDIT (ДОПОЛНЕНО):

пример кода на основе свой комментарий ... опять же, это работает:

<?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->, которое разбивает ваш html? отсутствующий закрывающий тег или цитата или что-то еще? Или, может быть, ваш селектор jquery не блестящий? Как выглядит ваш селектор?

+0

Дополнительная информация в комментарии к моему сообщению. Благодарю. – user194076

+0

добавлено обновление на основе вашего комментария –

1

Я хотел опубликовать здесь, так как я также обнаружил, что .html не сможет получить значение скрытого элемента, если элемент выше страницы, чем код jQuery.

Если я создаю видимый элемент, тогда код работает так, как ожидалось, или если я перемещаю элемент под jQuery, то он также работает.

Это, кажется, ответ, по крайней мере для меня.

Итак, самое простое исправить - это просто переместить код jQuery над скрытым элементом, тогда .html, похоже, работает с скрытым элементом.

Похоже, что это может быть ошибка в jQuery, поскольку это довольно странное поведение. Также, если я использую метод jQuery .hide, чтобы скрыть элемент на загрузке страницы, а затем .show, чтобы показать его, прежде чем получить значение, которое оно по-прежнему терпит неудачу, если элемент выше, чем еще незнакомец.

Робин

0

У меня была проблема при использовании идентификатор, изменен класс и все работало нормально

Смежные вопросы