0

我的代码是这样的

    <table>
      <tr><td> report heading </td> </tr>
      <tr><td>export to excel button</td></tr>
      <tr><td> 
         <table id=tblGridview>
          <tr><td><asp:gridview cssclass = "OFGrid" id="grdviewID"></asp:gridview></td></tr>
         </table>
        </td>
       </tr>
    </table>

and am using below jquery to highlight the row when clicked
$(document).ready(function() {
    $('tr').filter(function() {
            return $('td', this).length && !$('table', this).length
        }).click(function() {
            $(this).toggleClass('currRow');
        });
    });

这工作正常,但问题是这会为所有 tr 触发。即使我单击具有“报告标题”和“导出到 excel”按钮的前两行,该行也会突出显示。我如何将 jquery 更改为仅在单击 gridview 中的任何行时才会触发 jquery 的方式。由于gridview本身作为表发出,我如何限制特定于该表的jquery。

如果可能的话,如果有人逐行解释这个jquery是如何工作的,那将会很有帮助。我只是不明白。

请帮助。谢谢。

4

2 回答 2

0

Filter out the first 2 rows inside your filter() condition:

return this.index() > 1 && $('td', this).length && !$('table', this).length;
于 2013-01-05T16:02:07.990 回答
0

您可以使用gt(index)选择器将元素集合过滤为仅索引大于选择器中提供的索引的元素

$('table').find('tr:gt(1)')....

如果这会导致嵌套表出现问题,您可能应该考虑将一些类添加到表或行中

$('table.allowClickClass tr')....

或者

$('tr').not('.noClickClass').... 

API 参考:http ://api.jquery.com/gt-selector/

编辑如果我理解问题,另一个可能有用的简单选择器是:

/* only apply handler to nested tables*/
$('tr table tr').click...
于 2013-01-05T16:26:56.583 回答