jQuery可以';t访问所查找的DOM元素

jQuery可以';t访问所查找的DOM元素,jquery,html,dom,css-selectors,Jquery,Html,Dom,Css Selectors,我有以下HTML元素 <div id="divOrderContainer"> <ul id="ulOrders"> <li id="liAck"> <div id="divViewOrderTitle"></div> <div id="divViewOrderSpacer"></div> <div id="divAcknowledgeItems"></div>

我有以下HTML元素

<div id="divOrderContainer">
 <ul id="ulOrders">
<li id="liAck">
  <div id="divViewOrderTitle"></div>
  <div id="divViewOrderSpacer"></div>
  <div id="divAcknowledgeItems"></div>              
</li>
<li id="liTemp">
  <div id="divViewOrderTitle">test</div>
  <div id="divViewOrderSpacer"></div>
  <div id="divTempItems"></div>
</li>
 </ul>          
</div>
单击时会提醒我元素id,但是,当我尝试检查是否附加了单击处理程序时,没有任何元素id

单击处理程序代码:

$("#divTempItem > table > tbody > tr").('click', 'td span', function(){
   alert($(this).attr("id");
});
我也试过了

$("#tableTemp").on('click', 'tr td span', function(){
   alert($(this).attr("id");
});
但是没有用,我似乎无法访问我正在寻找的特定DOM元素。。。访问名称“span”+编号并不能解决我的问题

我是不是错过了什么

这里是输出DOM树的视图;我已经删除了结尾的标签,我想这就足够了

<div id="divOrderContainer">
   <ul id="ulOrders">
      <li id="liAck"></li>
      <li id="liTemp">
          <div id="divViewOrderTitle">test</div>
          <div id="divViewOrderSpacer"></div>
          <div id="divTempItems">
            <li>
               <table id="tableTemp">
                  <tbody>
                     <tr>                         
                       <td> a </td>
                       <td> b </td>
                       <td> c </td>
                       <td> d </td>
                       <td><span id="span8">delete</span></td>
                     </tr>                         
                   </tbody>
                </table>

  • 测试
  • A. B C D 删除
到底是谁自动创建了“TBODY”元素


谢谢..

从您对问题的描述来看,从Ajax部分来看,在绑定事件时,DOM中似乎不存在表,相反,我建议从
domray
绑定到DOM中存在的
li
元素:

$('#divTempItems li').on('click', 'td', function(e){
    alert(this.id);
});
请注意,HTML无效(粘贴在后一个代码块中),因为
li
必须出现在
ul
ol
元素中,并且
div
元素不能是
ul
ol
的直接子元素。重复的
id
s无效,文档中的
id
必须是唯一的


当呈现表格元素时,大多数(如果不是全部)浏览器都会自动创建
tbody
。我记得,虽然规范中说它们是可选的,但浏览器似乎不同意。

可能您可以更改这一行:

'<td><span id="span'+posid+'">delete<span></td>' +

您的HTML有多个具有相同ID的对象。这是无效的。你只能在HTML文档中使用一次ID。为什么在这里有
“+b+”
?我已经更新了DOM,我为误传道歉。你说得完全正确,我一直在混合元素,因为HTML不够严格,不能吐出错误,作为一名程序员,你除了一次又一次地调试代码之外别无选择,独自一人查看代码即使不是令人沮丧的任务,也是一项艰巨的任务。。。六羟甲基三聚氰胺六甲醚。。。无论如何,谢谢你为我指出。。。一个引起很多麻烦的简单错误只是为了澄清我的困惑,你说过“div”元素不能是“ul”或“ol”的直接子元素,这是否意味着我不能创建类似“
    • ”的东西,因为这里的“div”将成为
    • 的直接子元素?不,在那个例子中,
      div
      将是
      li
      的“直接子对象”,这很好,只是
      div
      不能将
      ul
      ol
      作为它的父对象(祖先很好,但父对象是不可能的)。
      $('#divTempItems li').on('click', 'td', function(e){
          alert(this.id);
      });
      
      '<td><span id="span'+posid+'">delete<span></td>' +
      
      '<td><span id="span'+posid+'" onclick='+'"delete(this)">delete<span></td>' +
      
      function delete(obj){
         alert($(obj).arrt('id'));
      }