jQuery选择器 - 大于的变量

时间:2013-05-03 13:10:30

标签: jquery

我正在为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>

1 个答案:

答案 0 :(得分:1)

使用filter并假设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');