- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
期望的行为
将样式应用于容器中的每三个可见子 div(即 1、3、5、7 等),使用:
.card:nth-child(2n+1) {
margin-right: 20px !important;
background: pink;
}
实际行为
nth-child
样式应用于所有子 div,无论可见性如何(这是已知行为)。
场景
一个包含子 div 的容器,这些子 div 在输入 keyup 时被过滤。
过滤后,nth-child
样式将应用于所有子 div,而不仅仅是可见的 div。
下面链接的答案为使用 detach()
的类似问题提供了解决方案,但我无法弄清楚如何在每个 keyup 过滤器之后动态地重新插入分离的元素(并且不是确定这是否是最好的方法)。
https://stackoverflow.com/a/32380418
jsFiddle:link
$(document).on("keyup", ".my_input", function() {
var input_val = $(this).val();
var input_length = input_val.length;
// minimum 2 chars for search
if (input_length > 2) {
filter_cards(input_val);
} else if (input_length <= 2) {
$(".card").show();
// remove matched text styling
// see: https://stackoverflow.com/a/4232971
$('span.matched_text').contents().unwrap();
}
});
// filter function
function filter_cards(input_val) {
// iterate over each card
$(".card").each(function() {
var match_counter = 0;
// instance of card
var $card = $(this);
var text = $card.text();
var exists_in_string =
text.toLowerCase().indexOf(input_val.toLowerCase()) !== -1;
if (exists_in_string === false) {
$card.html(text);
} else if (exists_in_string === true) {
match_counter += 1;
var reg = new RegExp(input_val, 'i');
$card.html(text.replace(reg, '<span class="matched_text">$&</span>'));
}
if (match_counter > 0) {
$card.show();
} else {
$card.hide();
}
});
}
* {
box-sizing: border-box;
}
.my_input {
width: 100%;
font-size: 48px;
margin-bottom: 20px;
}
.my_cards {
display: flex;
flex-wrap: wrap;
}
.card {
width: calc(50% - 10px);
font-size: 38px;
border: 1px solid #000;
margin-bottom: 30px;
}
/* add margin on child divs 1,3,5,7 etc */
.card:nth-child(2n+1) {
margin-right: 20px !important;
background: pink;
}
.matched_text {
background: green;
color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="my_input" placeholder="search for hello, min 2 chars...">
<div class="my_cards">
<div class="card" data-initial_index="0">
01 - apples and hello
</div>
<div class="card" data-initial_index="1">
02 - oranges and hello
</div>
<div class="card" data-initial_index="2">
03 - bananas
</div>
<div class="card" data-initial_index="3">
04 - passionfruits and hello
</div>
<div class="card" data-initial_index="4">
05 - mangos and hello
</div>
<div class="card" data-initial_index="5">
06 - limes and hello
</div>
</div>
最佳答案
您可以尝试结合使用 visible
和 odd/even
伪选择器来更改您的 css:
$('.card:visible:even').css({ 'background': 'pink'});
$('.card:visible:odd').css({ 'background': 'white'});
$(document).on("keyup", ".my_input", function() {
var input_val = $(this).val();
var input_length = input_val.length;
// minimum 2 chars for search
if (input_length > 2) {
filter_cards(input_val);
} else if (input_length <= 2) {
$(".card").show();
// remove matched text styling
// see: https://stackoverflow.com/a/4232971
$('span.matched_text').contents().unwrap();
}
$('.card:visible:even').css({ 'background': 'pink','marginRight':'20px'});
$('.card:visible:odd').css({ 'background': 'white','marginRight':0});
});
// filter function
function filter_cards(input_val) {
// iterate over each card
$(".card").each(function() {
var match_counter = 0;
// instance of card
var $card = $(this);
var text = $card.text();
var exists_in_string =
text.toLowerCase().indexOf(input_val.toLowerCase()) !== -1;
if (exists_in_string === false) {
$card.html(text);
} else if (exists_in_string === true) {
match_counter += 1;
var reg = new RegExp(input_val, 'i');
$card.html(text.replace(reg, '<span class="matched_text">$&</span>'));
}
if (match_counter > 0) {
$card.show();
} else {
$card.hide();
}
});
}
* {
box-sizing: border-box;
}
.my_input {
width: 100%;
font-size: 48px;
margin-bottom: 20px;
}
.my_cards {
display: flex;
flex-wrap: wrap;
}
.card {
width: calc(50% - 10px);
font-size: 38px;
border: 1px solid #000;
margin-bottom: 30px;
overflow:hidden;
}
/* add margin on child divs 1,3,5,7 etc */
.card:nth-child(2n+1) {
margin-right: 20px;
background: pink;
}
.matched_text {
background: green;
color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="my_input" placeholder="search for hello, min 2 chars...">
<div class="my_cards">
<div class="card" data-initial_index="0">
01 - apples and hello
</div>
<div class="card" data-initial_index="1">
02 - oranges and hello
</div>
<div class="card" data-initial_index="2">
03 - bananas
</div>
<div class="card" data-initial_index="3">
04 - passionfruits and hello
</div>
<div class="card" data-initial_index="4">
05 - mangos and hello
</div>
<div class="card" data-initial_index="5">
06 - limes and hello
</div>
</div>
关于jquery - 如何将 nth-child 样式应用于过滤后的 div 集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52926933/
:nth-child(2) 似乎选择了 child 1 内部的东西。 child 1 和 child 3 工作正常。 好像不涉及tag的类型,几个类似但不同的问题都有。我没有看到问题。 https:/
我想用 javascript 隐藏一个特定的 child : #table-detail > tbody > tr:nth-child(10) 基于另一个特定的前一个 child 的内容: #tabl
在我自学 CSS 的过程中,我遇到了伪选择器 :nth-child() (以及它相关的选择器 :nth-last-child() 和 :nth-of-type())。 我已经对它进行了足够的研究,以了
在自学 CSS 的过程中,我遇到了伪选择器 :nth-child() (以及它的相关选择器 :nth-last-child() 和 :nth-of-type())。 我已经对它进行了足够的研究以理解语
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我想避免在自定义 Wordpress 模板中使用函数或循环来为特定元素显示不同的背景颜色。我的问题是需要更改的容器及其父容器。 每个第 1、4、7 等配置文件类都需要有蓝色背景色。每个第 2、5、8
这个问题在这里已经有了答案: What does a space mean in a CSS selector? i.e. What is the difference between .clas
我有 3 个按钮,对于第二个按钮,我试图为其添加额外的边距,但出于某种原因,nth-child 和 nth-of-type 根本没有改变外观。我想我只是不明白它们是如何工作的,所以如果有人可以传播一点
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我需要在 x 数量的元素之后插入一个 clearfix div,以便我可以获得格式良好的列。 我已经尝试了 :nth-child 和 :nth-of-type 并且我只在前 x 个项目之后添加了一个
遇到一个我想不通的问题。我正在尝试做的一个简单示例: 在类 .row 下第一个“跨度”的每次出现都以红色突出显示,除了第一次出现,它应该以黄色突出显示。 .row span:nth-of-type(1
什么 CSS 选择器可用于选择父元素中的所有奇数元素,但不一定是兄弟元素? A A A
我正在尝试更改 div 内的奇数 div 的样式。出于某种原因,当 nth-of-type(odd) 在另一个 div 中时,它会影响我的所有 div。这是我的常规 div 和奇数 div 的代码:
这个问题在这里已经有了答案: Can I combine :nth-child() or :nth-of-type() with an arbitrary selector? (9 个回答) Wh
我正在尝试更改 div 内的奇数 div 的样式。出于某种原因,当 nth-of-type(odd) 在另一个 div 中时,它会影响我的所有 div。这是我的常规 div 和奇数 div 的代码:
我有这个 html 代码: CSS: .productWarp .productLine { background-color
我是一名优秀的程序员,十分优秀!