0

我有一个表,并且有一个执行两件事的 jquery 脚本:

1)当一行被鼠标悬停时,通过添加悬停类来更改背景颜色

2) 行中包含的链接用于使整行成为链接。

<script type="text/javascript">
$(document).ready(function() {
    var target = 'table.mytable tr.allrows';
    var hoverClass = 'allrows_hover';

    $(target).each(function() {
        $(this).hover(
            function() {
                $(this).addClass(hoverClass);
                status = $(this).find('a').attr('href');
            },
                function() {
                    $(this).removeClass(hoverClass);
                    status = '';
                });
        $(this).click(function() {
            location = $(this).find('a').attr('href');
        });
        $(this).css('cursor', 'pointer');
    });
});
</script>

现在的问题是,我在每一行的一列中都有一个复选框,当我选中该框时,它会跟随链接。

我考虑从上面排除该列,但无法使其正常工作。谁能帮我找到一种方法来排除 td 或 - 甚至更好 - 复选框本身,这样我就可以点击它,但仍然可以在行的其余部分获得很好的悬停效果?

提前致谢。

4

3 回答 3

1

可能有用

  $(this).click(function(e) {
                location = $(this).find('a').attr('href');
                e.stopPropagation();
                return false;
            });
于 2009-09-21T02:44:37.780 回答
0

您的点击处理程序接收一个jQuery 事件对象。target 属性应该指示哪个 dom 元素收到了点击。在您的情况下,如果 e.target 是复选框,则您不会分配给 location .. 没有在您的代码上进行测试,但我已经做了类似的事情

于 2009-09-21T02:44:03.897 回答
0

好吧,我有一个解决方案。不确定它是最好的,但是...

我在包含复选框的 tds 中添加了一个类“noclick”。当鼠标悬停在该行中的任何单元格上时,这会将悬停类添加到整行,但不会为具有“noclick”类的单元格创建链接。

<script type="text/javascript">
$(document).ready(function() {
    var target = 'table.mytable tr.allrows td';
    var hoverClass = 'allrows_hover';

    $(target).each(function() {
        $(this).hover(
            function() {
                $(this).parent().addClass(hoverClass);
                status = $(this).parent().find('a').attr('href');
            },
                function() {
                $(this).parent().removeClass(hoverClass);
                    status = '';
                });
        $(this).not('td.noclick').click(function() {
            location = $(this).parent().find('a').attr('href');
        });
        $(this).not('td.noclick').css('cursor', 'pointer');
    });
});
</script>
于 2009-09-21T02:53:55.910 回答