Jquery - 将变量放入:contains()

时间:2010-03-29 02:47:15

标签: jquery

我正在尝试编写一个简单的Jquery,其中脚本将检查表格单元格是否包含一系列数字。

我不确定如何做到这一点,因为如果你要做这样的事情:

var num_range = ">1";
$("td:contains(" + num_range + ")").css('background-color', '#000');

...脚本只检测td是否包含确切的文本“> 1”,而不是我所追求的,它检测是否有任何tds包含任何大于1的数字。(然后任何样式背景)

感谢您的帮助,我是Javascript / Jquery新手!

2 个答案:

答案 0 :(得分:4)

没有本机jQuery选择器。如果你想要或只是使用,你可以写一个:

$("td").each(function() {
  if (parseInt($(this).text()) > 1) {
    $(this).css("background", "#000");
  }
});

如果您想创建自己的选择器:

$.extend($.expr[":"], {
  expr: (function() {
    var op = {
      '=': function(n1, n2) { return n1 == n2; },
      '!=': function(n1, n2) { return n1 != n2; },
      '>': function(n1, n2) { return n1 > n2; },
      '>=': function(n1, n2) { return n1 >= n2; },
      '<': function(n1, n2) { return n1 < n2; },
      '<=': function(n1, n2) { return n1 <= n2; }
    };
    var ops = [];
    for (p in op) {
      ops.push(p);
    }
    var r = new RegExp("^\\s*(" + ops.join("|") + ")\\s*(-?\\d+(?:\\.\\d+)?)\\s*$");
    return function(elem, i, match) {
      var m = r.exec(match[3]);
      return m && op[m[1]](parseFloat($(elem).text()), parseFloat(m[2]));
    };
  })()
});

然后你可以这样做:

$("td:expr(>5)").css("background", "yellow");

答案 1 :(得分:1)

jQuery中没有内置选择器可以执行此操作。

您可以使用.filter手动为元素提供资金。 (通过调用过滤器中的.text