jQuery使用.on()和.each()

时间:2013-01-31 00:13:00

标签: javascript jquery

我试图让任何带有“RW”字符串的TD单元都有一类红色。我需要使用.on,因为网格有分页并重新加载新内容。我还需要使用每个,因为可能有多个包含该字符串的TD单元格。

 $("#json-table").on("tbody tr td"){
 if ($(this).text() == 'RW').each({
 $(this).addClass('red'))};

4 个答案:

答案 0 :(得分:2)

如果您不关心td中是否存在其他字符,则可以使用:contains选择器更直接地过滤到正确的单元格:

$('#element_id').on('click', function() {
    $('#json-table td:contains("RW")').addClass('red');
});

其中element_id是您要分配点击事件处理程序的元素的ID。

答案 1 :(得分:1)

您需要使用.filter()来缩小您的设置范围,但如果没有更多信息,我们就无法说出 来从中调用它。记住jQuery函数在整个集合上运行,这就是你想要的:

$("#json-table tbody tr td").filter(function() {
  return $(this).text() == 'RW';
}).addClass('red');

...你需要用你的分页代码来调用它。

编辑:因为看起来你正在使用datatables.net,一个更完整的例子是:

$('#json-table').bind('sort filter page', function () {
  $("tbody tr td", this).filter(function() {
    return $(this).text() == 'RW';
  }).addClass('red');
});

答案 2 :(得分:0)

.on() .each()完全不同。 .on() is used to attach an event其中 .each() is used to iterate over objects or arrays.

试试这个

$("#json-table tbody tr td").each(function(){
       var $this = $(this);
    if($this.text().indexOf('RW') > -1)){
        $this.addClass('red');
    }|
});

答案 3 :(得分:0)

.on用于处理由元素触发的事件。查看文档以了解正确的用法。假设您要处理click事件,语法如下所示。您提到该活动将被委派,因此您的使用必须与此签名相符。

$("#json-table").on('click', "tbody tr td", function() {
    if ( $(this).text() == 'RW') ) {
        $(this).addClass('red');
    }
});

请注意,您的.each被链接到if语句,这是无效的JS。 this已经引用了您要定位的正确<td>元素。