Javascript 如何知道单击时选择了多少类元素?

Javascript 如何知道单击时选择了多少类元素?,javascript,jquery,html,Javascript,Jquery,Html,我正在处理愿望列表,每个项目上都有心形图标,现在我想显示愿望列表中添加的项目总数。正确的方法是什么 $(函数(){ $('body')。在('click','fav icon',function()上{ var icon=$(这个); var icon_fa_icon=icon.attr('data-prefix'); 如果(图标法图标==“远”){ icon.attr('data-prefix','fas'); $('.search list box.fav icon')。每个(函数(){

我正在处理愿望列表,每个项目上都有心形图标,现在我想显示愿望列表中添加的项目总数。正确的方法是什么

$(函数(){
$('body')。在('click','fav icon',function()上{
var icon=$(这个);
var icon_fa_icon=icon.attr('data-prefix');
如果(图标法图标==“远”){
icon.attr('data-prefix','fas');
$('.search list box.fav icon')。每个(函数(){
var fasLength=$(this.attr('data-prefix','fas');
var wishlistDiv=+$(fasLength).length;
$('.wishlist_count sup').text(wishlistDiv);
});
}否则{
icon.attr('data-prefix','far');
}
});
});

0


部分问题在于这些行:

var fasLength = $(this).attr('data-prefix', 'fas');
var wishlistDiv = +$(fasLength).length;
第一行将所有元素上的
数据前缀
属性设置为
fas
,以便在第一次单击时选择所有元素。因为它选择了所有元素,所以计数是错误的。要解决此问题,需要使用属性选择器:

var fasLength = $('[data-prefix="fas"]').length;
最后,当取消选择某项时,您还需要修改所选项目的计数,因此计数逻辑应该在
if
条件之外运行。计算也不需要
each()
循环

完整的逻辑将如下所示:

$(函数(){
$('body')。在('click','fav icon',function()上{
var$icon=$(this).attr('data-prefix',函数(i,v){
返回v=='far'?'fas':'far';
});
var fasLength=$('[data prefix=“fas”]')。长度;
$('.wishlist_count sup').text(fasLength);
});
});

0


感谢它工作正常,但在取消选择图标上它不工作我编辑了@Rory plz review and approve,它在选择和取消选择上都可以工作。@Rory McCrossan这在iphone的safari浏览器上不起作用。