jquery - 如何将当前单击的元素添加到jquery中的数组?
问题描述
我的号码如下
<div class="btn">
<span class="num-items">1</span>
</div>
<div class="btn">
<span class="num-items">2</span>
</div>
<div class="btn">
<span class="num-items">3</span>
</div>
<div class="btn">
<span class="num-items">4</span>
</div>
<div class="btn">
<span class="num-items">5</span>
</div>
$('.btn').click(function(){
var currentEl = [];
$(this).toggleClass('bg_red');
currentEl.push($(this));
if(currentEl.length >=3){
alert("You can pick only 3 item");
}
})
每次单击数字时,我都想将此元素添加到数组中,以便当数组长度大于或等于 3 时,我可以提醒消息。
解决方案
添加日志,您会看到每次单击时都会currentEl
重置[]
,因为您在每次函数调用时都重新声明了它
$('.btn').click(function(){
var currentEl = [];
$(this).toggleClass('bg_red');
console.log(currentEl)
currentEl.push($(this));
if(currentEl.length >=3){
alert("You can pick only 3 item");
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btn">
<span class="num-items">1</span>
</div>
<div class="btn">
<span class="num-items">2</span>
</div>
<div class="btn">
<span class="num-items">3</span>
</div>
<div class="btn">
<span class="num-items">4</span>
</div>
<div class="btn">
<span class="num-items">5</span>
</div>
将 currentEl 移到外部范围,事情会很好,但是对逻辑的一个小建议是记得在添加之前检查长度
var currentEl = [];
$('.btn').click(function(){
$(this).toggleClass('bg_red');
console.log('before add', currentEl)
if(currentEl.length >=3){
alert("You can pick only 3 item");
return;
}
currentEl.push($(this).find('span').text());
console.log('after add', currentEl)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btn">
<span class="num-items">1</span>
</div>
<div class="btn">
<span class="num-items">2</span>
</div>
<div class="btn">
<span class="num-items">3</span>
</div>
<div class="btn">
<span class="num-items">4</span>
</div>
<div class="btn">
<span class="num-items">5</span>
</div>
推荐阅读
- c++11 - Eignen 矩阵状态向量对一些样本进行平均以进行方向计算
- python - Python - regex.match 和不同的文本编解码器?
- ios - 为什么我最近安装的应用程序不断降级?
- java - 是否可以使用硒验证昨天的交易
- string - 有没有办法获取每个签入存储库的人的列表并将其全部列在 sha256 字符串中?
- swift - Swift NSTextField,在 Cmd + Enter 上执行
- ruby-on-rails - 有多少并发动作电缆连接?
- java - 雪花 - 如何处理 Java 代码中的 NUMBER(38, 0)
- angular - 将 FormArray 嵌套在另一个 FormArray 中
- arrays - 使用查询组合来自不断变化的选项卡列表的数据