2010-11-23 2 views
0


У меня есть следующий простой html: <td id="comment_td"> </td>. В td есть два пробела. Я проверяю Td HTML как это:jQuery javascript странное поведение в .html()

if (!$('#comment_td').html()) { 
    $('#comment_td').html('No Comments'); 
} 

Но это работает только в IE))) В Firefox это условие не выполняется. Вы можете мне помочь?

+0

потому что тогда проблема будет обращена вспять, она будет работать в FF, но не в IE, поскольку IE преобразует `` `` в `` '` – RobertPitt 2010-11-23 18:34:11

ответ

1
if ($('#comment_td').html().trim() == "") { 
    $('#comment_td').html('No Comments'); 
} 
+1

, почему бы не просто:` $ (' # comment_td '). Html() .trim() `? – RobertPitt 2010-11-23 16:35:41

2

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

if($('#comment_td').html().trim().length == 0) { 
    $('#comment_td').html('No Comments'); 
} 

Некоторые браузеры удалить дубликаты пространств, и может даже удалить все пробелы между двумя метками, если нет другого контента.

Если вы хотите, чтобы проверить, если есть пробелы, вы действительно должны выводить пространства, используя &nbsp; характер, как это:

<td id="comment_td">&nbsp;&nbsp;</td> 
0
var empty = $.trim($('#comment_td').html()).length == 0; 

if (empty) { 
    // do whatever 
} 
2

Попробуйте следующее:

var Comment = $('#comment_td'); 
if(Comment.html().trim().length == 0) 
{ 
    Comment.html('No Comments'); 
} 

По проверяя отрегулированную длину, которую вы конкретно указываете, чтобы удалить пустое пространство, так как некоторые браузеры, такие как IE, будут удалять пустое пространство, где другие не будут, поэтому в firefox, потому что это пространство в элементе его на самом деле существует.

Если ваши комментарии в пределах comments_td находятся в контейнерах, то вы также можете проверить детей, например:

<td id="comment_td"> 
    <p class="comment">A comment</p> 
    <p class="comment">A comment</p> 
</td> 

Тогда в Jquery вы можете сделать:

if($("#comments_td > p.comment").size() == 0) 
{ 
    //No Comments. 
} 
0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 

И

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"> 

сделать оба выше по-разному под firefox.

Это может быть связано с вашим !DOCTYPE, определенным на самой первой строке вашего документа HTML, перед тегом HTML. Узнайте больше об этих Mysterious Gaps.

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