1

我正在为 jQuery 驱动的表单开发网格系统

当类名中的数字大于或等于 firstNum 和 secondNum 时,我需要将某个类添加到所有 s 中,这些变量已经存在。

每个都有一个唯一的类,格式为“firstNumber-secondNumber”,例如“2-5”或“4-1”

这是我正在寻找的方向的一个片段 - 方括号中的位会使这更清楚一点。

$('td.[GREATER THAN OR EQUAL TO firstNum]-[GREATER THAN OR EQUAL TO secondNum]').addClass('selectable');

任何帮助表示赞赏-我想知道过滤是否是下降的路线(?)-但目前还不能完全到达那里..!

HTML

 <tr> 
     <td class="1-1">cell data</td> 
     <td class="1-2">cell data</td> 
     <td class="1-3">cell data</td> 
 </tr> 
 <tr> 
     <td class="2-1">cell data</td> 
     <td class="2-2">cell data</td> 
     <td class="2-3">cell data</td> 
 </tr> 
 <tr> 
     <td class="3-1">cell data</td> 
     <td class="3-2">cell data</td> 
     <td class="3-3">cell data</td> 
 </tr>
4

1 回答 1

1

使用过滤器并假设你的只有一个类td,你会这样做:

$('td').filter(function(){
     var c = this.className;
     if (!c) return false;
     var tokens = c.split('-');
     if (parseInt(tokens[0])>firstNumber
         && tokens.length>0
         && parseInt(tokens[1])>secondNumber
     ) return true;
     return false;
 }).addClass('selectable');

但这很重。在不了解整个上下文的情况下,很难提出相关的命题,但在这种情况下会想到数据属性。


编辑,查看您的 HTML,您似乎只对行和单元格编号感兴趣。这意味着你可以做这样的事情:

$('tr:gt('+firstNumber+')').find('td:gt('secondNumber')').addClass('selectable');
于 2013-05-03T13:18:55.007 回答