IE 6 JQuery选择器
我有一个简单的HTML布局,如下所示: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>
<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我想他的问题已经非常冗长了。他收到一个“未定义”错误,他的选择器已列出。