Jquery 值不相关时更改单元格样式

Jquery 值不相关时更改单元格样式,jquery,css,Jquery,Css,事情是这样的,账单是从点阵打印机中打印出来的,纸张是连续的(就像你们大多数人在销售部门看到的那样)。有时为了完成销售,推销员会拿一张账单(不是空白的)手工制作。 现在的系统可以通过让人们手动设置值,然后继续增加值来处理这种跳跃 但是还有一个空白,我必须突出显示空白前的行(只有带id的单元格),以便更清楚地看到有人拿了一张账单,手工制作,还没有重新注册 是这样的: (id列的css类是clave,意思是key) 因此,id 002和005的行应显示字体重量:粗体css,以使丢失的票据更容易识别。

事情是这样的,账单是从点阵打印机中打印出来的,纸张是连续的(就像你们大多数人在销售部门看到的那样)。有时为了完成销售,推销员会拿一张账单(不是空白的)手工制作。 现在的系统可以通过让人们手动设置值,然后继续增加值来处理这种跳跃

但是还有一个空白,我必须突出显示空白前的行(只有带id的单元格),以便更清楚地看到有人拿了一张账单,手工制作,还没有重新注册

是这样的: (id列的css类是clave,意思是key)

因此,id 002和005的行应显示字体重量:粗体css,以使丢失的票据更容易识别。 我遇到的另一个问题是,这个html结构不是一个表,它实际上是由层(div标记)组成的

我有很多代码,我不知道为什么它不工作。。。 你我可以看到它在这里运行:

使用jQuery选择器,然后遍历所有选定项,并使用.css方法更改css

长时间查看您的解释后,我认为这就是您想要做的

$(document).ready(function() {
    $(".clave").each(function(i, v) { // loop through each elem with class=clave
        var $next = $.trim($(".clave").eq(i + 1).text()); // get next text
        var $ele = $.trim($(v).text()); // get this text
        if ((+$next) - (+$ele) > 1) { // subtract next from now - if greateer than 1
            $(v).css('color', 'red').css('font-weight','bold'); // turn current text bold
        };
    });
});​
编辑: 忘记使用$.trim()而不是.trim()来支持跨浏览器


解决问题的一种方法:

function ensureConsecutive(el) {
    if (!el || !el.parentNode.nextElementSibling) {
        return false;
    }
    else {
        var curId = parseInt(el.textContent,10),
            parent = el.parentNode,
            nextRow = parent.nextElementSibling,
            nextId = parseInt(nextRow
            .getElementsByClassName('id')[0].textContent,10);

        if (curId + 1 !== nextId) {
            $(el).addClass('nonConsecutive');
        }
    }
}

$('td.id').each(
    function(i,el){
        ensureConsecutive(el);
    });


尽管这不兼容跨浏览器,但由于
nextElementSibling
textContent
的使用,这可能会成为跨浏览器,使用更jQuery的方法或通过替代的纯JavaScript方法(
innerText
)实现,页面上有一个错误,表示未定义jquery。在继续之前,请确保此页面可以访问jquery,可以参考google副本。文件引用问题。。包括jQuery文件我纠正了引用程序的问题,但仍然不起作用…修剪!我从来没有想过在这里使用trim:OJust trimming the unsential whitespace:)我注意到里面有很多空白,出于某种原因,你能花点时间给我解释一下函数(I,v)。。。在每个函数中,你从哪里得到了两个变量。。第一个参数=集合中当前元素的索引。。所以你可以用i+1来得到下一个元素并进行比较。。v包含您的DOM元素,即td元素。。您可以再次将其转换为jQuery对象以使用jQuery函数。它就像一个for循环。。其中i是索引。。但是jQuery也将元素作为参数传入。。你可以在这里读到更多关于它的信息,thnx,我会使用一种简单的方法,但我无法着手去PHP。。。
function ensureConsecutive(el) {
    if (!el || !el.parentNode.nextElementSibling) {
        return false;
    }
    else {
        var curId = parseInt(el.textContent,10),
            parent = el.parentNode,
            nextRow = parent.nextElementSibling,
            nextId = parseInt(nextRow
            .getElementsByClassName('id')[0].textContent,10);

        if (curId + 1 !== nextId) {
            $(el).addClass('nonConsecutive');
        }
    }
}

$('td.id').each(
    function(i,el){
        ensureConsecutive(el);
    });