切换到jQuery 1.5会破坏选择器

时间:2011-02-22 16:56:42

标签: find jquery-1.5

刚刚升级到jQuery 1.5,现在似乎find()在几个selctores中存在问题:

var $AlertColumn = $('[name=TABLE_1] tr').find('.SAPBEXstdData:eq(9), .SAPBEXstdDataOdd:eq(9), td.SAPBEXaggData:eq(9)');

从1.5(和IE7)开始,IE7中的东西会在一段时间内出现错误,因为脚本会永远运行。

它在1.4.2中完美无缺。

确定这里是代码(到第一个数据行),我必须处理Alert-Row,它是第9个,在find()中使用了这些类:

    <TABLE class=SAPBEXCellspacing cellSpacing=1 cellPadding=0 width=1250 border=0 name="TABLE_1" sizcache="5" sizset="20"><TBODY sizcache="5" sizset="20">
<TR sizcache="5" sizset="21">
<TD noWrap colSpan=19 sizcache="5" sizset="21">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0 sizcache="5" sizset="21">
<FORM name=SAPBWUForm5 action=/sap/bw/BEx?SAP-LANGUAGE=DE&amp;ITEM=TABLE_1&amp;STATE_ID=4KXJZOX5URFHG6BQFFTKAJ0OH&amp;STATELESS=X&amp;LAST_MESSAGE_ID=0 method=post sizcache="5" sizset="21">
<TBODY sizcache="5" sizset="21">
<TR sizcache="5" sizset="22">
<TD class=SAPBEXScrollVert noWrap sizcache="5" sizset="22">
<TABLE cellSpacing=0 cellPadding=1 border=0 sizcache="5" sizset="22">
<TBODY sizcache="5" sizset="22">
<TR>
<TD class=SAPBEXTxtStd noWrap><IMG title="Erste Zeile" alt="Erste Zeile" src="/sap/bw/Mime/BEx/Icons/page_first_row_inact.gif" border=0></TD>
<TD class=SAPBEXTxtStd noWrap><IMG title="Vorherige Zeilen" alt="Vorherige Zeilen" src="/sap/bw/Mime/BEx/Icons/page_up_inact.gif" border=0></TD>
<TD class=SAPBEXTxtStd noWrap>&nbsp;<LABEL>Zeile</LABEL></TD>
<TD noWrap><INPUT class=SAPBEXTxtFldright id=DATA_ROW_FROM title="Zeile - Maximale Anzahl: 170" onchange=document.SAPBWUForm5.submit() size=3 value=1 name=DATA_ROW_FROM></TD>
<TD class=SAPBEXTxtStd noWrap>/&nbsp;170&nbsp;</TD>
<TD class=SAPBEXTxtStd noWrap><A title="Nächste Zeilen" href="JavaScript:SAPBW(5,'','','68')"><IMG title="Nächste Zeilen" alt="Nächste Zeilen" src="/sap/bw/Mime/BEx/Icons/page_down.gif" border=0></A></TD>
<TD class=SAPBEXTxtStd noWrap><A title="Letzte Zeile" href="JavaScript:SAPBW(5,'','','170')"><IMG title="Letzte Zeile" alt="Letzte Zeile" src="/sap/bw/Mime/BEx/Icons/page_last_row.gif" border=0></A></TD></TR></TBODY></TABLE></TD></FORM></TR></TBODY></TABLE></TD></TR>
<TR></TR>
<TR>
<TD class=SAPBEXchaText noWrap>Profit Center</TD>
<TD class=SAPBEXchaText noWrap>Projektleiter</TD>
<TD class=SAPBEXchaText noWrap colSpan=2>Projekt</TD>
<TD class=SAPBEXchaText noWrap>akt. Status</TD>
<TD class=SAPBEXchaText noWrap>akt. Status Dat.</TD>
<TD class=SAPBEXchaText noWrap>Kredit Datum</TD>
<TD class=SAPBEXchaText noWrap>letzte Buchung</TD>
<TD class=SAPBEXstdItem noWrap>Kredit</TD>
<TD class=SAPBEXstdItem noWrap>Ist Q1 2010</TD>
<TD class=SAPBEXstdItem noWrap>Ist Q2 2010</TD>
<TD class=SAPBEXstdItem noWrap>Ist Q3 2010</TD>
<TD class=SAPBEXstdItem noWrap>Ist Q4 2010</TD>
<TD class=SAPBEXstdItem noWrap>Kredit %</TD>
<TD class=SAPBEXstdItem noWrap>FC Q3</TD>
<TD class=SAPBEXstdItem noWrap>FC Q4</TD>
<TD class=SAPBEXstdItem noWrap>Projektende</TD>
<TD class=SAPBEXstdItem noWrap>Alert</TD>
<TD class=SAPBEXstdItem noWrap>Notizen</TD></TR>
<TR>
<TD class=SAPBEXstdItem noWrap rowSpan=7>PC100</TD>
<TD class=SAPBEXstdItem noWrap rowSpan=3>Ammann Conrad</TD>
<TD class=SAPBEXstdItem noWrap>G000034</TD>
<TD class=SAPBEXstdItem noWrap>Techn. Zusammenarbeit China</TD>
<TD class=SAPBEXstdItem noWrap>k.a.</TD>
<TD class=SAPBEXstdItem noWrap>#</TD>
<TD class=SAPBEXstdItem noWrap>#</TD>
<TD class=SAPBEXstdItem noWrap>#</TD>
<TD class=SAPBEXstdData title=0 noWrap>0</TD>
<TD class=SAPBEXstdData noWrap>&nbsp;</TD>
<TD class=SAPBEXstdData noWrap>&nbsp;</TD>
<TD class=SAPBEXstdData noWrap>&nbsp;</TD>
<TD class=SAPBEXstdData title=0 noWrap>0</TD>
<TD class=SAPBEXstdData noWrap>&nbsp;</TD>
<TD class=SAPBEXstdData noWrap>&nbsp;</TD>
<TD class=SAPBEXstdData noWrap>&nbsp;</TD>
<TD class=SAPBEXstdData noWrap>&nbsp;</TD>
<TD class=SAPBEXstdData noWrap>I NEED THIS ONE (9th) of every Data Row</TD>
<TD class=SAPBEXstdData title=0 noWrap>
<DIV class=notiz style="TEXT-ALIGN: left"></DIV></TD></TR>
<TR>
<TD class=SAPBEXstdItem noWrap>G000164</TD>
<TD class=SAPBEXstdItem noWrap>Tag der offenen Tür</TD>...

........

3 个答案:

答案 0 :(得分:0)

尝试将输入放在选择器前面(如input[name=TABLE_1] tr),因为jQuery可能会查看每个元素,包括spans,div,h1等...

答案 1 :(得分:0)

两种不同的解决方案:

  • 如果没有破坏,请不要修复它:继续使用jQuery 1.4.2。 或...
  • 重写选择器,以便更有效地选择。从$('table[name=TABLE_1] tr')开始,在.find()中使用更具体的选择器 - 也许使用.children()代替.find()?需要查看实际标记以获得更具体的建议。

修改您的标记非常无效。 form不是table的有效孩子,name不是table的有效属性(正如@Capsule所指出的),您没有使用{{1}正确...我建议您熟悉W3C Validator并从那里开始。

答案 2 :(得分:0)

$('[name = TABLE_1] tr')似乎无效,因为TABLE或TBODY没有任何NAME属性(如果我错了,请更正我)。