【问题标题】:Selected row/rows have a hover state选定的行/行具有悬停状态
【发布时间】:2013-06-19 09:56:37
【问题描述】:

我已经在<div id="middle" class="fl">做了一张桌子 它看起来像这样:! 小提琴中:http://jsfiddle.net/qqmhao/e2N4e/1/

现在我必须这样做:

  • 行具有悬停状态
  • 可以选择不带复选框的行
  • 可以选择多行

任何帮助都非常感谢!

【问题讨论】:

  • 你的 JavaScript 呢?
  • 你有什么问题?
  • 你的意思是进度条?它来自 jQuery UI @Zenith
  • ''可以在没有复选框的情况下选择行'' - 您应该在单击行时激活复选框,使用 jquery 会更容易。
  • jsfiddle.net/qqmhao/e2N4e/1 @Zenith 在这里~ :)

标签: javascript html select checkbox hover


【解决方案1】:

试试这个

此代码可能对您有所帮助 => 在 tr 上单击,如果选中复选框,则取消选中它,否则检查它

对于tr悬停效果你可以写css

http://jsfiddle.net/e2N4e/6/

    $('table tr').click(function(){
  if(!$(event.target).is(":checkbox"))
  {

        if($(this).find('[type="checkbox"]').is(':checked')){
            $(this).find('[type="checkbox"]').prop('checked',false)
            $(this).removeAttr('style');
        }
       else{
         $(this).find('[type="checkbox"]').prop('checked',true)

         $(this).css('background', 'yellow');
    }
}
    })

<style>
table tr:hover{
    background:yellow;

}
</style>

【讨论】:

  • 但是复选框现在不起作用,对吧?对于悬停,我在css中使用了tr:hover { background: #FCF; }。虽然我想要的是可以选择行但不能选择复选框,但选择行时会显示悬停状态...这是新的:jsfiddle.net/qqmhao/e2N4e/4@sangram parmar
  • 你太棒了..非常感谢...@sangram parmar
【解决方案2】:

可点击的行:

$('table').on('click', 'tr', function() {
    var $row = $(this);
    var $checkbox = $row.find('[type=checkbox]');
    $checkbox.click();
});

可悬停的行:

tr:hover {
    background-color: grey;
}

启用状态:

$('table').on('click', '[type=checkbox]', function(e) {
    var $checkbox = $(this);
    var $row = $checkbox.parents('tr');
    e.stopPropagation(); // Prevents the other click handler from being called
    if($checkbox.prop('checked')) {
        $row.addClass('checked');
    } else {
        $row.removeClass('checked');
    }
});

启用状态 CSS:

tr.checked {
    background-color: cyan;
}

显然,这需要更多的工作 - 例如突出显示在 HTML 中启用了复选框的行。但你明白了要点。

【讨论】:

  • 是的。谢谢大家。:) 这是第二种方法..和第一种方法一样酷..但它有点难以理解..@Rudolph Gottesheim
  • @Sunny 我认为这是更好的代码,因为我实际上并没有通过 JavaScript 设置 CSS 属性。但是您绝对是正确的,因为另一个答案更易于阅读和理解,您或多或少可以将其放入。:)
  • 真的吗?那么我们应该避免通过 JavaScript 设置 CSS 属性吗?嗯.. @Rudolph Gottesheim
  • @Sunny 通过 JS 设置和删除类名并应用样式本身,您可以分离关注点。 JavaScript(或与此相关的 DOM)本身不应该与页面的外观有任何关系。类名是实现这一点的桥梁。您不必使用 JavaScript 代码来更改活动行的外观。 CSS 就是为此而生的。 Doug Neiner 在维也纳的最后一次 jQuery 会议上谈到了这一点。他还为此写了a blog post
猜你喜欢
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多