小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我现在要做一个批量删除功能,点击一个【全选】的checkbox,就能全选列表中所有的checkbox,
我使用的是在data里放selectAll:false的变量,全部的checkbox的checked="{{selectAll}}",
然后改变selectAll:true就可以全部显示选中了,但是这样不会触发bindchange,没办法获取所有的id号,请问有办法获取所有的id吗?
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
自己搞出来了一个办法,用createSelectorQuery,效率也还不错,直接省掉了bindchange事件,从代码简洁度来讲感觉好一些。
100条,耗时29毫秒,感觉还可以。
var
idlist = [];
dt =
new
Date();
ss = wx.createSelectorQuery();
res = ss.selectAll(
".selectCheckbox"
);
res.fields({
properties: [
"checked"
,
'value'
]
},
function
(resx) {
$.log(resx.length)
for
(
x = 0; x < resx.length; x++) {
tjson = resx[x];
$.log(tjson);
if
(tjson.checked ===
true
) {
idlist.push(tjson.value);
}
}).exec(
() {
$.log(idlist);
console.log(
"耗时=>"
+ (
Date() - dt));
});
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
自己写个假的选框
好惨 ╯﹏╰ 习惯了js的极度自由,改成每次都要遍历全部数据感觉超级浪费。遍历一次数据,就等于要全部都重新渲染一次,这样不是太浪费资源了吗?难度没有更好一些的办法。。。
没有ID那这些161、162哪来的。。。
为什么不在每个数据单独设置一个复选框状态属性呢?
全选的时候遍历下数据,把复选框状态变更下就行了,提交数据的时候再遍历下数据判断哪些是选中的。
只能遍历这一种办法吗?,而且每一列还要新增一个是否选中的状态属性,列表长的时候感觉特别耗费资源😓
<checkbox-group bindchange="checkboxChange">
<label class="checkbox" wx:for="{{items}}">
<checkbox value="{{item.name}}" checked="{{item.checked||a}}"/>{{item.value}}
</label>
</checkbox-group>
好的,我试试,可能是之前操作dom习惯了,没改过来,因为之前datagrid一次渲染就是500-1000条数据,手机上好像也不可能这么搞,还是要靠搜索。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
自己搞出来了一个办法,用createSelectorQuery,效率也还不错,直接省掉了bindchange事件,从代码简洁度来讲感觉好一些。
100条,耗时29毫秒,感觉还可以。
var
idlist = [];
var
dt =
new
Date();
var
ss = wx.createSelectorQuery();
var
res = ss.selectAll(
".selectCheckbox"
);
res.fields({
properties: [
"checked"
,
'value'
]
},
function
(resx) {
$.log(resx.length)
for
(
var
x = 0; x < resx.length; x++) {
var
tjson = resx[x];
$.log(tjson);
if
(tjson.checked ===
true
) {
idlist.push(tjson.value);
}
}
}).exec(
function
() {
$.log(idlist);
console.log(
"耗时=>"
+ (
new
Date() - dt));
});
自己写个假的选框
好惨 ╯﹏╰ 习惯了js的极度自由,改成每次都要遍历全部数据感觉超级浪费。遍历一次数据,就等于要全部都重新渲染一次,这样不是太浪费资源了吗?难度没有更好一些的办法。。。
没有ID那这些161、162哪来的。。。
为什么不在每个数据单独设置一个复选框状态属性呢?
全选的时候遍历下数据,把复选框状态变更下就行了,提交数据的时候再遍历下数据判断哪些是选中的。
只能遍历这一种办法吗?,而且每一列还要新增一个是否选中的状态属性,列表长的时候感觉特别耗费资源😓
<checkbox-group bindchange="checkboxChange">
<label class="checkbox" wx:for="{{items}}">
<checkbox value="{{item.name}}" checked="{{item.checked||a}}"/>{{item.value}}
</label>
</checkbox-group>
好的,我试试,可能是之前操作dom习惯了,没改过来,因为之前datagrid一次渲染就是500-1000条数据,手机上好像也不可能这么搞,还是要靠搜索。