我在页脚中有一个表格单元格,允许用户打开行着色:
$('#highlight').click(function() { $(this).parents('table').RowColors(); }) // From Chapter 7 of Learning jQuery $.fn.RowColors = function() { $('tbody tr:odd',this).removeClass('even').addClass('odd'); $('tbody tr:even',this).removeClass('odd').addClass('even'); return this; };
问:如何编写一个选择器:如果至少有一行class =“even”,则删除“even”和“odd”ELSE执行RowColors函数.
解决方法
我的建议是略有不同.只有一个类的默认状态是另一个.所以:
tr td { background: yellow; } tr.odd td { background: blue; }
然后这很简单:
$("tr").toggleClass("odd");
或者更具体地说:
$("tbody > tr").removeClass("odd").filter(":nth-child(odd)").addClass("odd");
注意:避免使用:odd和:even.它们通常并不代表您认为的含义. :nth-child(单数)和:nth-child(even)往往是你真正的意思.
我可能会写一些类似的东西:
$("#highlight").click(function() { $(this).closest("table").children("tbody").children("tr").removeClass("odd") .filter(":nth-child(odd)").addClass("odd"); return false; });
如果您愿意,可将其放入单独的功能中.
编辑:检查是否有空:
var odd = $(".odd"); if (odd.length == 0) { // do one thing } else { // do something else }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。