Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery正在查找<;的子元素;表>;?_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery正在查找<;的子元素;表>;?

Javascript jQuery正在查找<;的子元素;表>;?,javascript,jquery,html,Javascript,Jquery,Html,我试图用jquery为“表”的每个“tr”子元素执行一个函数,但这段代码没有标识子元素。我以前在基于“div”的设计中使用过这段代码,如果我将“table”和“tr”标记更改为“div”,它将非常有效,但它不会在这里运行! 这是一个简单的设计: <table id="tblSearch" border="1px"> <tr> <td>Hello</td> </tr> <tr>

我试图用jquery为“表”的每个“tr”子元素执行一个函数,但这段代码没有标识子元素。我以前在基于“div”的设计中使用过这段代码,如果我将“table”和“tr”标记更改为“div”,它将非常有效,但它不会在这里运行! 这是一个简单的设计:

<table id="tblSearch" border="1px">
    <tr>
        <td>Hello</td>
    </tr>
    <tr>
        <td>Hey</td>
    </tr>
    <tr>
        <td>Hi</td>
    </tr>
    <tr>
        <td>There!</td>
    </tr>
</table>
<table>
    <tr align="center">
        <input id="btnSearch" type="button" value="Search" />
    </tr>
</table>
请注意,警报只运行一次!我还删除了JSFIDLE中用于儿童的“tr”,使代码可以运行。。。
有人能帮我吗?

您提供的问题中有多个问题:

  • 你的HTML是无效的;将
    td
    元素放置在每个
    tr
  • 调用正确的jQuery函数。不要使用
    children('tr')
    ,因为没有
    tr
    table
    元素的子元素(仅
    tbody
    thead
    等),而是需要调用
    find()
    jQuery函数(例如
    find('td')
    )从那里你可以得到单元格的文本;但是,在这种情况下,您也可以找到
    tr
    ,并获取整行的文本

  • tr
    元素不是
    表的子元素,而是(或
    thead
    tfoot
    )的子元素。如果未指定
    tbody
    元素,则会自动创建该元素。如果检查生成的DOM,您可以自己轻松地解决这个问题

    长话短说,使用
    搜索所有子代。查找

    $("#tblSearch").find("tr")
    // simpler:
    $("#tblSearch tr")
    
    或者在选择器中包含
    tbdoy

    $("#tblSearch").children("tbody").children("tr")
    // simpler:
    $("#tblSearch > tbody > tr")
    
    也就是说,您还必须在
    td
    元素中添加实际内容,如其他答案中所述



    如果您不熟悉HTML和表格,请阅读。

    有两个问题,无效的HTML和选择器错误

    <table id="tblSearch" border="1px">
        <tr>
            <td>Hello</td>
        </tr>
        <tr>
            <td>Hey</td>
        </tr>
        <tr>
            <td>Hi</td>
        </tr>
        <tr>
            <td>There!</td>
        </tr>
    </table>
    

    演示:

    首先修复html并在单元格数据周围添加正确的标记

    那么这应该可以满足您的需求:

     $('table#tblSearch tr').children().each(function(){
       alert($(this).text());
     });
    

    你根本不需要使用儿童。您只需创建一个选择器-

    $('#tblSearch tr td')
    
    工作演示-

    首先,您需要修复HTML结构,将子td元素放在每个tr-

    <table id="tblSearch" border="1px">
        <tr> 
            <td>Hello</td>
        </tr>
        <tr>
            <td>Hey</td>
        </tr>   
        <tr>
            <td>Hi</td>
        </tr>   
        <tr>
            <td>There!</td>
        </tr>
    </table>
    
    <div>
    <input id="btnSearch" type="button" value="Search"/></td>
    </div>
    
    注意-这将根据需要分别警告每个值。

    问题是:

    • 自动将
      tbody
      元素插入DOM,因此您不应将
      TR
      作为
      元素的子元素引用
    • 您引用了不存在的
      text
      属性,而不是jQuery
      text()
      函数
    • 无论如何,您可能希望引用
      td
      s(并且可能在每行中只引用一个特定的td),因为返回整行的文本(
      TR
      )在HTML中很少有意义
    JSFiddle:
    #tblSearch td:first child
    选择器基本上是这样说的:“用
    id=tblSearch
    查找元素,然后搜索任何
    td
    元素,它们是其父元素的
    first child
    。注意,我在JSFIDLE中添加了第二列虚拟TDs单元格,以便您可以在实践中看到这一点


    有很多选择器可以选择特定的孩子,它们会根据你的具体需求而有所不同,但这只需要对你的html进行一点研究就可以了。你的
    tr
    里面没有
    td
    ,我认为不是这样。我已经删除了“td”“此处仅为简单起见。如果您通过减少示例来引入新问题,我们如何知道真正的问题是什么?哦,对不起。我会记住的!:)如果省略
    tbody
    ,则
    tr
    元素作为
    表的直接子元素是完全可以接受的。链接的MDN文档说明了这一点。我从来没有说过它不是。但是选择器不起作用,因为
    tbdoy
    是自动创建的。谢谢@Felix,你解决了我的问题。我不知道tbody。@spender:实际上看起来
    tr
    元素在HTML4()中不是有效的子元素,但它们在HTML5()中是有效的。@spender:另外,我也不确定HTML到底是如何转换为DOM的,但是如果我们假设它使用DOM API添加行,
    insertRow
    方法会声明“此外,当表为空时,该行将插入到创建并插入表的TBODY中。”。可以在HTML4和HTML5中找到。这将解释为什么会创建
    TBODY
    元素(这是我唯一能找到的关于此主题的内容).就像菲利克斯一样,谢谢你,阿伦。身体是个大问题。谢谢你的小提琴:)
    $('#tblSearch tr td')
    
    <table id="tblSearch" border="1px">
        <tr> 
            <td>Hello</td>
        </tr>
        <tr>
            <td>Hey</td>
        </tr>   
        <tr>
            <td>Hi</td>
        </tr>   
        <tr>
            <td>There!</td>
        </tr>
    </table>
    
    <div>
    <input id="btnSearch" type="button" value="Search"/></td>
    </div>
    
    $(function () {
      $('#btnSearch').click(function () {
         $("#tblSearch tr td").each(function(){
              alert($(this).text());
          });
      });
    });
    
    $(function () {
        $('#btnSearch').click(function () {
            var a = $("#tblSearch td:first-child").each(function () {
                alert($(this).text());
            });
        });
    });