- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
找不到这个确切的问题,所以这里...
我原本想实现的和this question基本一样,但对于 Rows 而不是 Divs。经过一些进一步的研究,我不确定我想要实现的目标是否会以我认为应该的方式实现,但这让我发现了最后的奇怪之处。
谁能解释一下 last-of-type 在这种情况下是如何工作的?我将 last-of-type 应用于不存在的元素,而不应用于现有元素(希望有意义)。
CSS 规则:
.row-detail:last-of-type {
background-color: red;
}
一个例子:
SampleTable = $('#sampleTable').DataTable();
$('.detailButton').on('click', function() {
var button = $(this);
var icon = button.find('i.fa');
icon.toggleClass('fa-eye');
icon.toggleClass('fa-eye-slash');
button.blur();
var row = button.closest('tr');
var dataTableRow = SampleTable.row(row);
console.log(dataTableRow.child.isShown())
if (!dataTableRow.child.isShown()) {
dataTableRow.child(buildDetailRows()).show();
}
else {
dataTableRow.child.hide();
}
});
function buildDetailRows() {
return $('<tr class="row-detail"><td>Detail 1</td><td>Detail r1 c1</td><td>Detail r1 c2</td><td>Detail r1 c3</td></tr><tr class="row-detail"><td>Detail 2</td><td>Detail r2 c1</td><td>Detail r2 c2</td><td>Detail r2 c3</td></tr><tr class="row-detail"><td>Detail 3</td><td>Detail r3 c1</td><td>Detail r3 c2</td><td>Detail r3 c3</td></tr>');
}
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#banner-message {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
button {
background: #0084ff;
border: none;
border-radius: 5px;
padding: 8px 14px;
font-size: 15px;
color: #fff;
}
#banner-message.alt {
background: #0084ff;
color: #fff;
margin-top: 40px;
width: 200px;
}
#banner-message.alt button {
background: #fff;
color: #000;
}
.row-detail:last-of-type {
background-color: red;
}
<link href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.datatables.net/1.10.18/css/dataTables.bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.18/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.18/js/dataTables.bootstrap.min.js"></script>
<div class="table">
<table id="sampleTable" class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th>Detail</th>
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<button class="detailButton btn btn-xs btn-primary" data-toggle="button">
<i class="fa fa-eye"></i>
</button>
</td>
<td>row1 Col1</td>
<td>row1 Col2</td>
<td>row1 Col3</td>
</tr>
<tr>
<td>
<button class="detailButton btn btn-xs btn-primary" data-toggle="button">
<i class="fa fa-eye"></i>
</button>
</td>
<td>row2 Col1</td>
<td>row2 Col2</td>
<td>row2 Col3</td>
</tr>
<tr>
<td>
<button class="detailButton btn btn-xs btn-primary" data-toggle="button">
<i class="fa fa-eye"></i>
</button>
</td>
<td>row3 Col1</td>
<td>row3 Col2</td>
<td>row3 Col3</td>
</tr>
</tbody>
</table>
</div>
请注意:这有点延迟/滞后/与相同代码的非 jsFiddle 实现略有不同。出于某种原因,fiddle 只在前面的详细信息行关闭时应用最后一行的样式——它在 jsFiddle 中效果更好。
要点是,当您单击详细信息按钮时,它会创建 DataTable 的子行。这些只是表格行,没什么特别的,但最后一个类型仅应用于最后一个表格行中的最后一个子行。
我希望看到的是:
实际情况如何
除了表格最后一行中的第 3 个子行之外,没有子行使用“last-of-type”样式设置样式 - 尽管在单击之前不存在。 在 jsFiddle 的情况下,您需要关闭之前的详细信息行以“启用”最后一个的样式 - 如上所述,我的代码库中不需要这种“关闭之前的详细信息” - 它似乎是一个 fiddle 的细微差别。
jsFillde 中更奇怪的一点是,当所有三个详细信息按钮都处于事件状态时,它会为最后一行设置样式,但只有两个按钮处于事件状态时则不会。
顺便说一句,我对 last-child 有同样的行为。
(使用 Chrome)。
最佳答案
在:last-of-type
,“类型”指的是标记名 - 它选择所有元素,这些元素在其兄弟元素中是最后一个具有该标记名的元素。在这种情况下,它要应用的元素是 tr
元素,所以只有当元素是最后一个 tr
时才会匹配在其 sibling 中。
请注意,选择器是独立匹配的。事实上,你用 .row-detail
进一步限定了它对 :last-of-type
的方式没有影响火柴。这是两个完全独立的过滤器:“我有 .row-detail 类吗”和“我是我 sibling 中的最后一个 tr”。
因此,当您展开第三行时,这将匹配,因为“详细信息行”添加在所有其他行之后,所以最后一个 tr
表中还有一个 .row-detail
.当您展开任何其他行时,它不匹配,因为最后一个 .row-detail
元素不是最后一个 tr
在其 sibling 中。
您真正想要的确实存在于规范中,但目前仅由 Safari 实现::nth-last-child(1 of tr.row-detail)
. of <selector>
:nth-child()
的参数和 :nth-last-child()
将计数限制在与选择器匹配的元素中。向浏览器 vendor 提交错误以支持它!
关于javascript - last-of-type 应用于不存在的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52317226/
SELECT *, `o_cheque_request.member_id`, `o_cheque_request.wallet_id` FROM `o_cheque_request`, `o_mem
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要**SELECT count(*)**呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如
我试图找出一个文件是否存在,如果存在,验证css样式是否已经存在,如果不存在,将它们写在文件末尾... 我已经完成了这一切,但分 3 个步骤: 该文件是否存在? FileInfo fi= new Fi
我们正在开发即时消息传递应用程序,并且需要在用户的化身上用绿点显示用户 friend 的“状态”。 “状态”远远超出了“my_app_is_opened_and_on_focus”,这意味着(我猜可能
模式 Movie(title, year, director, budget, earnings) Actor(stagename, realname, birthyear) ActedIn(stag
我有一个正在尝试创建的 MySQL 触发器,但无法获得正确的语法。 触发器应该遍历一组关键字并将其与插入数据库的新帖子的标题进行匹配。如果找到匹配项,它应该将新帖子分配给该存储桶并更新存储桶的关键字集
我有 3 个表......用户、更新和碰撞。 我想向发出 api 请求的用户返回最新订单的 feed 更新,并提供显示 feed 中每个状态所需的所有数据。我还需要包括更新是否已被发出 api 请求的
我正在尝试呈现一个带有 UIView 的 UIViewController。 以下是我在 viewDidLoad 方法中尝试的代码。 //create the view controller UIVi
我正在努力弄清楚如何在不对 mysql 进行两次调用的情况下从一个表中检查两件事。 我有一个 Members 表。我想测试MemberID 列中是否存在某个值,以及PhoneNumber 列中是否存在
以下代码给出了一个没有 Do Compile 错误的循环: Loop Sheets("Snap").Rows(1).AutoFilter Field:=5, Criteria1:=List
是否可以通过检查“dig”的输出来检查域名的存在? 在绑定(bind)源中,我发现了这些常量: 0 DNS_R_NOEROR 1 DNS_R_FORMERR 2 DNS_R_SERVFAIL 3 DN
Controller 有问题 我在 Windows 上使用服务器,一切正常,但在互联网上我试图访问页面 social_apartament/beauty_life/并且找不到该页面,代码错误 404这
/** This is struct S. */ struct S(T) { static if(isFloatingPoint!T) { /// This version works
JVM 类型删除如何帮助 Clojure?没有它,Clojure 还能存在吗?如果 JVM 有具体化的类型会发生什么?也就是说,Clojure 将如何改变? 最佳答案 Clojure 根本不会有太大变
许多论文等提到对“system()”的调用是不安全且不可移植的。我不反对他们的论点。 不过,我注意到许多 Unix 实用程序都有一个等效的 C 库。如果没有,源可用于各种这些工具。 虽然许多论文和此类
在我的 Node js 应用程序中,我有一个用户登录 api。上面我在服务器端代码中创建了一个名为 customerid 的变量。现在,当用户身份验证成功时。我将他的 userid 值存储在我的 cu
我有一个工作资源管理器组,由 Ubuntu 14.04 虚拟机、网络接口(interface)、公共(public) IP 地址和存储帐户组成。我已经从这组资源中创建了一个模板。 当我尝试部署这组资源
我有一个函数createminor4(arr,锦标赛)它基本上将arr分成4组,每组8人,然后将它们一次交换到tourney 1组。从那里它插入四个{},其中有 4 个带有空数组的键。 我已经在 Ch
我有一个图表,其中有两个图例。我需要更改其中一个图例的点的大小。 我需要更改图例中“市场类型”的项目符号大小。我使用示例 here但不适用于我的图表。 我的代码如下: k <- ggplot(subs
我有 fiddle here展示我正在尝试做的事情。 我有一个动态生成的表,因此列可以按用户选择的任何顺序显示。因此,我尝试获取两个特定 header 的索引,以便可以将 CSS 类添加到这两列以供稍
我是一名优秀的程序员,十分优秀!