IE 6 JQuery选择器

IE 6 JQuery选择器,jquery,css,selector,internet-explorer-6,Jquery,Css,Selector,Internet Explorer 6,我有一个简单的HTML布局,如下所示: <html> <head> <title>HTML Page</title> </head> <body> <table> <tr> <td> <a href="some.html">Text</a> </td>

我有一个简单的HTML布局,如下所示:

<html>
  <head>
    <title>HTML Page</title>
  </head>
  <body>
    <table>
      <tr>
        <td>
          <a href="some.html">Text</a>
        </td>
      </tr>
    </table>
  </body>
</html>
不幸的是,这似乎不起作用,当我将其包装在try-catch块中时,会出现一个错误,称为“undefined object”

以前有人见过这个吗


Eef

我认为您需要将该选择器修改为以下内容:

$('html > body > table > tbody > tr:nth(0) > td').html()

如果可能,我会尝试将类/id添加到元素中,以避免此类模糊(ish)选择器的潜在问题。

我相信您需要将该选择器修改为以下内容:

$('html > body > table > tbody > tr:nth(0) > td').html()

如果可能的话,我会尝试将类/id添加到元素中,以避免像这样模糊(ish)选择器的潜在问题。

您不需要从“html”开始。想想看:这比从“身体”开始更好吗?我认为你也不需要那种亲子特异性。我敢打赌:

$('table td:first')

应该是您所需要的全部。

您不需要从“html”开始。想想看:这比从“身体”开始更好吗?我认为你也不需要那种亲子特异性。我敢打赌:

$('table td:first')
应该是您所需要的全部。

选择第一个td“-
$('td:first')
$('td').first()

有关详细信息,请参阅文档。

选择第一个td“-
$('td:first')
$('td').first()


有关更多详细信息,请参阅文档。

大多数选择器都是无用的。尝试:

$("td:first > a");
它将选择文档中第一个
td
a
子级

如果您有更多的表,您可能希望将其添加到id中,然后可以通过以下方式进行选择:

$("#table_id td:first > a");

大多数选择器都是无用的。尝试:

$("td:first > a");
它将选择文档中第一个
td
a
子级

如果您有更多的表,您可能希望将其添加到id中,然后可以通过以下方式进行选择:

$("#table_id td:first > a");

tr
不直接在
表中,即使从您的标记中看起来是这样。每一行都放在
thead
tbody
tfoot
元素中,如果省略
开始标记,浏览器将为您无声地插入它。因此,要选择行,您必须说:

table>tbody>tr
这是由于HTML解析的一个怪癖,在许多情况下允许省略起始标记(例如,如果省略
,浏览器将认为它在第一次遇到某些页面内容时就在那里)

然而,XHTML有更规则的解析规则,其结果是,如果以XML模式解析页面,则不会有隐含的
tbody
。因此,编写在这两种情况下都匹配的选择器更为困难

另外,
nth
选择器是选择器的非标准jQuery扩展,这将导致使用缓慢的JavaScript“Sizzle”选择器引擎,而不是浏览器的快速内置选择器引擎(如果可用,即不是IE6-7)。尝试使用标准CSS选择器来避免这种情况

最好使用DOM样式的遍历而不是选择器来获取所需的元素,从而避免这两个问题。DOM本身提供了表和行上的
单元格
列表,这可能比jQuery提供的任何东西都要简单:

var table= $('#someselector table').get(0);   // however you access the table
var cell= table.rows[0].cells[0];             // or whatever rows/column you want
$(cell).doSomething();                        // ...

tr
不直接在
表中,即使从您的标记看它是这样的。每一行都放在
thead
tbody
tfoot
元素中,如果省略
开始标记,浏览器将为您无声地插入它。因此,要选择行,您必须说:

table>tbody>tr
这是由于HTML解析的一个怪癖,在许多情况下允许省略起始标记(例如,如果省略
,浏览器将认为它在第一次遇到某些页面内容时就在那里)

然而,XHTML有更规则的解析规则,其结果是,如果以XML模式解析页面,则不会有隐含的
tbody
。因此,编写在这两种情况下都匹配的选择器更为困难

另外,
nth
选择器是选择器的非标准jQuery扩展,这将导致使用缓慢的JavaScript“Sizzle”选择器引擎,而不是浏览器的快速内置选择器引擎(如果可用,即不是IE6-7)。尝试使用标准CSS选择器来避免这种情况

最好使用DOM样式的遍历而不是选择器来获取所需的元素,从而避免这两个问题。DOM本身提供了表和行上的
单元格
列表,这可能比jQuery提供的任何东西都要简单:

var table= $('#someselector table').get(0);   // however you access the table
var cell= table.rows[0].cells[0];             // or whatever rows/column you want
$(cell).doSomething();                        // ...

我已经尝试添加tbody,但它仍然会给我带来错误,我之所以使用这样的选择器,是因为为了测试,我让它们通过nokogiri(ruby on rails)返回,尝试一些更模糊的东西,比如
$('td:nth(0)').html()
,看看你得到了什么。您是否尝试过提醒选择器的内容以查看其值?我尝试过添加tbody,但它仍然给我错误,我之所以使用这样的选择器,是因为为了测试,我让它们通过nokogiri(ruby on rails)返回,尝试一些更模糊的东西,如
$('td:nth(0)')。html()
看看你能得到什么。您是否尝试过提醒选择器的内容以查看其值?除了不起作用的代码外,请用文字描述您尝试选择的内容。有人可能会给你一个简单得多的解决办法。@istruble我想他的问题已经非常冗长了。他收到一个“未定义”错误,他的选择器已列出。请用文字描述您试图选择的内容,以及不起作用的代码。有人可能会给你一个简单得多的解决办法。@istruble我想他的问题已经非常冗长了。他收到一个“未定义”错误,他的选择器已列出。