jquery addClass仅应用于每一个表行

jquery addClass仅应用于每一个表行,jquery,css,Jquery,Css,我在tr行上有一个带有jquery onClick事件的表。我想突出显示当前选定的行。“突出显示”是指:将背景色和普通字体更改为斜体。因此,我创建了一个类“selected_row”,并在onClick中将该类添加到该行中。之前,我将从所有其他行中删除该类,以便从先前高亮显示的行中删除高亮显示。问题是,它可以很好地工作,但只适用于每第二行。这是在IE8中运行的。 我使用IE8中的开发工具进行了检查,虽然选定的_row类确实在那里应用,并且对于索引为1、3、5的每一行都可见。。。对于索引为0、2、

我在tr行上有一个带有jquery onClick事件的表。我想突出显示当前选定的行。“突出显示”是指:将背景色和普通字体更改为斜体。因此,我创建了一个类“selected_row”,并在onClick中将该类添加到该行中。之前,我将从所有其他行中删除该类,以便从先前高亮显示的行中删除高亮显示。问题是,它可以很好地工作,但只适用于每第二行。这是在IE8中运行的。 我使用IE8中的开发工具进行了检查,虽然选定的_row类确实在那里应用,并且对于索引为1、3、5的每一行都可见。。。对于索引为0、2、4、…的行,它在调试器的DOM树中不应用或不可见。。。 我不懂。具有奇数和偶数索引的行之间没有任何区别

以下是部分代码:

table th {
    background-color: #ededed; 
    padding: 5px;
}
table td {
    padding: 5px;
}
.selected_row {
    font-style: italic;
    background-color: #eeeeee;
}
JavaScript:

var tableRowClickHandler = function () {
    if ($(this).hasClass ("header")) {
        // alert ('has class');
    }
    else {
        var _this = $(this)
        if (_this.hasClass ("selected_row")) {
            _this.removeClass ("selected_row");
        }
        else { 
            $("tr").each (function () {
            if (!$(this).hasClass ("header"))
                $(this).removeClass ("selected_row");
            });
            _this.addClass ("selected_row");
        }
    }
};

我认为您可以将此功能缩小:

var tableRowClickHandler = function () {
    if ($(this).hasClass ("header")) {
        return;
    }
    else {
        $("tr").removeClass ("selected_row");
        $(this).addClass ("selected_row");
    }
};

我解决了这个问题,没有通过类添加样式,而是通过两个单独的css()调用来设置颜色和字体样式。这很好,对我来说就足够了。不知道为什么它不能与addClass()一起工作。

$('.selected_row').removeClass('selected_row')
要删除这个类以前发生的所有事件看起来很好,它应该很简单,因为JSFIDLE似乎不能与IE8一起工作……您的HTML格式可能不正确吗?也许某个地方缺少结束标记?您使用的是哪个版本的jquery?1.7.1。我扩展了您的JSFIDLE示例,以更好地适应我实际所做的工作。该表通过ajax调用动态异步加载。在一个简化的例子中,所有这些都可以很好地工作。在我的实际代码中,也调用了click处理程序,只有$(this.addClass('selected_row')没有任何效果。。。