- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有 5 个元素,它们上方有一个按钮,用于通知将显示多少个元素。对于每个元素,我都有不同的背景图片。
问题是,当一个人点击一个元素时,该元素将被删除,另一个元素将是 appended
使用 jQuery 并且当附加一个新元素时,它会到达行尾,使其成为第 5 个元素,然后使其与第 5 个元素的背景一起使用,但有时第 5 个元素是唯一可见的,它应该与第一项的背景。
这是一个 JSFiddle: https://jsfiddle.net/wmerussi/csqge7jr/
一开始你有 5 个元素,注意第 5 个元素是蓝色的,现在如果你选择只显示一个元素,然后单击那个元素将其删除,另一个元素将是蓝色的(第 5 个元素的颜色) .
是否可以只定位可见的元素?或者是否可以重新排列可见的 <li>
s 到列表的开头?
HTML:
<div class="one">1</div>
<div class="two">2</div>
<div class="three">3</div>
<div class="four">4</div>
<div class="five">5</div>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
jQuery:
$('div').on('click', function() {
var num = $(this).text();
for(var i=0; i<5 ;i++) {
if(i < num) {
$('li').eq(i).fadeIn();
} else {
$('li').eq(i).fadeOut();
}
}
});
$(document).on('click', 'li', function() {
$(this).fadeOut(function() {$(this).remove();});
$(this).parent().append('<li></li>');
});
CSS:
div {
display: inline-block;
margin-right: 10px;
width: 30px;
height: 30px;
}
li:nth-child(1), .one {
background-color: green;
}
li:nth-child(2), .two{
background-color: orange;
}
li:nth-child(3), .three{
background-color: red;
}
li:nth-child(4), .four{
background-color: pink;
}
li:nth-child(5), .five{
background-color: blue;
}
更新
如何重现问题
单击我的 JSFiddle,然后选择仅显示 1 个元素(顶部的绿色“1”框)。之后,如果您单击该可见项将其删除(使用 jQuery),您将看到附加项将是蓝色的,因为它们被附加到 ul 列表的末尾,使其成为第 5 个元素。但它是第一个可见的元素,所以它应该是绿色的。
最佳答案
我的解决方案是创建一个函数来管理根据元素的位置和可见性向元素添加删除类,并在每个以某种方式更新元素的事件之后调用该函数。
这样您就可以将元素类管理与更新元素的代码分开
$(function() {
//the class management function
function updateElemClasses() {
//all color based classes the lists can have
var classes = ['one', 'two', 'three', 'four', 'five'];
//wait for fadeout to happen. Fadeout could take longer but this is just a proof of concept
window.setTimeout(function() {
$('li:visible').each(function(idx) {
$(this).removeClass(classes.join(' ')).addClass(classes[idx]);
})
}, 500);
}
$('div').on('click', function() {
var num = $(this).text();
for (var i = 0; i < 5; i++) {
if (i < num) {
$('li').eq(i).fadeIn();
} else {
$('li').eq(i).fadeOut();
}
}
updateElemClasses()
});
$(document).on('click', 'li', function() {
$(this).fadeOut(function() {
$(this).remove();
});
$(this).parent().append('<li>' + $(this).text() + '</li>');
updateElemClasses()
});
updateElemClasses();
});
/* you do not need nth-child now */
div {
display: inline-block;
margin-right: 10px;
width: 30px;
height: 30px;
}
.one {
background-color: green;
}
.two {
background-color: orange;
}
.three {
background-color: red;
}
.four {
background-color: pink;
}
.five {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class="one">1</div>
<div class="two">2</div>
<div class="three">3</div>
<div class="four">4</div>
<div class="five">5</div>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
关于jquery - 我怎样才能只用第 n 个子对象定位可见对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30280218/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我是 jQuery 的新手. 是否可以仅使用 jQuery 和 HTML 创建一个网站,例如在线测验? 最佳答案 我想理论上你可以。 要使网站不仅仅是一组静态页面,它必须做一些有用的事情。页面本身只能
所以 'awesome document' LIKE '%doc%' 是真的,因为 doc 是一个子字符串。但是,我希望它是假的,而 'awesome doc' 或 'doc awesome' 或 '
我正在寻找在我的 mysql 数据库中转储所有数据的语法。我不想要任何表格信息。 最佳答案 mysqldump --no-create-info ... 你也可以使用: --skip-triggers
我有一个算法,它在一个循环中使用 C 按位运算符(> 运算符,并且不想使用任何计算机语言(包括汇编)中的现有算术运算符。 最佳答案 在硬件中,您可以在根本没有任何逻辑门的情况下实现左移 1。只需像
我想用四种颜色填充不同的 div,只使用 javascript(当然有 HTML 结构),代码如下: HTML 1 2 3 4 JS var colors = {
我有一个基本的元素设置,根文件夹中有 index.html 和 styles.css。我希望每次单击保存时对 .css 文件所做的更改都会在浏览器中自动刷新。这是我的 gruntfile.js 的内容
我创建了一个应用程序,我需要通过两种方式登录:- Facebook登入,- 正常登录(电子邮件、密码)。 我已经使用 Facebook SDK 添加了 FBLogin 并修改了一个按钮,以便不使用 f
我把它作为我的 gulpfile.js: 'use strict'; var gulp = require('gulp'); var sass = require('gulp-sass'); gulp
RTOS有必要一直用C语言写吗?为什么不能用 Java 或其他技术进行编码……??是不是因为java中没有指针概念? 最佳答案 垃圾收集是反对 Java 实时化的重要原因。 JIT 是另一个,但它可以
我有一个使用 Netbeans 构建的示例代码。 它有一个 build.xml 文件,所以我下载了 ant 并尝试运行它。 我收到此错误消息: ...... nbproject\build-impl.
我正在开发响应式 Web 应用程序,需要创建 2 个独立的内容区域,如下所示, 到目前为止,我尝试过, border-right: 30px solid transparent; border-bot
我有这两个模型: // EventBoost describes the model of a EventBoost type EventBoost struct { ID
是否有一些有用且常用的事情无法用纯 Javascript 完成,而使用一些(不可见)Flash 却可以? 例如文件访问、直接打印、浏览器窗口控制、检测已安装的应用程序... 编辑:我只对客户端脚本感兴
#botonHome .contButton p a span{ height:25px; } #botonHome .contButton p a spa
我的对象由五个字段组成: public class ConfigurationItem { @SerializedName("show_interest") boolean s
使用 SSE 考虑这两个函数: #include int ftrunc1(float f) { return _mm_cvttss_si32(_mm_set1_ps(f)); } int f
在 icc 19 上,点积通过 fma 指令编译为循环。在 clang 和 gcc 上,fma 仅由 -ffast-math 生成. 然而,-ffast-math违反 IEEE 合规性,但 fma 完
我有一个特定的日志消息可能会被打印很多次的场景(可能是数百万次)。例如,如果我们记录(使用 logger.warn() 方法)每条缺少字段的记录,我们最终可能会记录很多输入文件有很多记录的情况缺少字段
在这个回复中 https://stackoverflow.com/a/58737595拜托,你能解释一下怎么写吗: return f( f, std::forward(args)... ); 而 f
我是一名优秀的程序员,十分优秀!