为什么不是jquery的.html()工作?

时间:2011-07-27 18:42:37

标签: javascript jquery html dom html-table

我有这段代码:

<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内容被标记为空(忽略)?

为什么?

proof http://sandbox.phpcode.eu/g/743de.php

UPDATE:

here 而且我的警报也让我无效

7 个答案:

答案 0 :(得分:5)

alert($("#"+a).html());

为null,因为您传递的是无效ID。

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

为null,因为元素td在其上下文中不是有效的html。


编辑:您的代码在那里工作正常。这次你的身份证无效。无法以数字开头。

答案 1 :(得分:5)

首先,您不能在表格之外添加<td>个元素,但是在您的更新中,您已经修复了它。

在您的最新更新中,由于jQuery选择器的工作原理,您发布的小提琴返回null。您要查找的ID是“5c192.php”,因此当您执行$('#'+a)时,它变为$('#5c192.php'),其被解释为'ID = 5c192'和'class = php',因为{{1} 1}}是一个类选择器。

.更改为$('#'+a)

答案 2 :(得分:3)

您正在呼叫del("bbbb"),但<td>的ID为“bbbbb”,其中包含5个b。不知道这是不是你的问题。此外,您不能在表格之外使用<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>

修改

td 在表格之外有效。如果您通过Web检查器查看生成的输出,您将看到td已被删除,并且其内容以纯文本形式放置在页面上。 td在那里是无效的,因此试图通过JS来实现它将证明是困难的并且是一个好主意。

答案 3 :(得分:3)

应在TABLE标签中包含TD 就像这个例子:jsfiddle

答案 4 :(得分:2)

浮动<td>元素无效,基本上被解析为

 wtf 

没有无效的td元素。将它改为span,div等,它会起作用。除了缺少的b

更新:

在您的jsFiddle中,您的ID为5c192.php。具体来说,不是以字母开头。来自What are valid values for the id attribute in HTML?

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

虽然,我也会删除这段时间。

答案 5 :(得分:1)

第一个td(id =“td”的那个)在一个表之外(tds总是应该在一个表中)并且你调用函数del给出一个带有4 b的字符串,bbbb而你的td有5天,ddddd。

答案 6 :(得分:1)

由于bbbbb(5x)和bbbb(4x)不同。