Почему jquery .html () не работает на <td></td>? - PullRequest
3 голосов
/ 27 июля 2011

У меня есть этот код:

<script> 
function del(a){
        alert(a);
        alert($("#"+a).html());
        alert($("#td").html());
            alert($("#div").html());
}
</script> 
<td id="td">wtf</td> 
<div id="div">wtf</div> 
<table> 
   <tr>
       <td id="bbbbb">test</td><td><span onclick="del('bbbb');">click</span></td>
   </tr>
</table>

Оповещения

bbbbb
test
null
wtf

td содержимое помечено как нулевое (игнорируется)?

Почему?

доказательство http://sandbox.phpcode.eu/g/743de.php

ОБНОВЛЕНИЕ:

посмотрите здесь и мое предупреждение также дает мне нулевое значение

Ответы [ 7 ]

5 голосов
/ 27 июля 2011
alert($("#"+a).html());

равно нулю, поскольку вы передаете неверный идентификатор.

alert($("#td").html());

равно нулю, поскольку элемент td не является допустимым html в своем контексте.


Редактировать: Ваш код там работает нормально. Просто ваш идентификатор не действителен в этот раз. Не могу начать с цифры.
5 голосов
/ 27 июля 2011

Во-первых, вы не можете иметь <td> элементов вне таблицы, но, похоже, в вашем обновлении вы исправили это.

В вашем последнем обновлении опубликованная вами скрипта возвращает ноль из-за того, как работают селекторы jQuery. Идентификатор, который вы ищете, это "5c192.php", поэтому, когда вы делаете $('#'+a), он становится $('#5c192.php'), что интерпретируется как 'ID = 5c192' и 'class = php', потому что . является классом селектор.

Изменить $('#'+a) на $('[id="'+a+'"]').

3 голосов
/ 27 июля 2011

Следует заключить TD в теги TABLE.
Как в этом примере: jsfiddle

3 голосов
/ 27 июля 2011

Вы звоните del("bbbb"), но идентификатор <td> - "bbbbb" с пятью буквами.Не уверен, что это ваша проблема, хотя.Кроме того, у вас не может быть <td> вне стола, поэтому, вероятно, $("#td") портится.Попробуйте:;

<script> 
function del(a){
        alert(a);
        alert($("#"+a).html());
        alert($("#td").html());
            alert($("#div").html());
}
</script> 

<div id="div">wtf</div> 
<table> 
   <tr>
       <td id="bbbbb">test</td><td><span onclick="del('bbbbb');">click</span></td>
<td id="td">wtf</td> 
   </tr>
</table>

Редактировать

a td не вне таблицы.Если вы посмотрите на сгенерированный вывод через веб-инспектор, то увидите, что td удален, а его содержимое размещено на странице в виде простого текста.ТД там недействителен, и поэтому попытка добраться до него через JS будет трудной, а не хорошей идеей.

2 голосов
/ 27 июля 2011

Этот плавающий элемент <td> недопустим и в основном разбирается на

 wtf 

без недействительных элементов td. Измените его на span, div и т. Д. Он будет работать. В дополнение к пропавшим b

UPDATE:

В вашем jsFiddle у вас неверный идентификатор 5c192.php. Конкретно, не начиная с буквы. С Какие допустимые значения для атрибута id в HTML?

Жетоны ID и NAME должны начинаться с буквы ([A-Za-z]) и могут быть за которыми следует любое количество букв, цифр ([0-9]), дефисов ("-"), подчеркивания ("_"), двоеточия (":") и точки (".").

Хотя я бы тоже удалил точку.

1 голос
/ 27 июля 2011

Поскольку bbbbb (5x) и bbbb (4x) различны.

1 голос
/ 27 июля 2011

Первый td (тот, что с id = "td") находится вне таблицы (tds всегда должен быть внутри таблицы), и вы вызываете функцию del, которая дает строку с 4 b, bbbb, а ваш td имеет 5 ддддд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...