首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选中的Jquery计数复选框和父显示块

选中的Jquery计数复选框和父显示块
EN

Stack Overflow用户
提问于 2016-09-10 14:27:40
回答 2查看 939关注 0票数 1

我要数多个元素。如果选中了复选框,并且父div没有隐藏,则有必要进行检查(显示: none;)

我尝试过多种方法,但都找不到解决办法。

我最后的测试是: Javascript

代码语言:javascript
复制
function triggerCounter() {
  countAll = $('.form-border').filter(function() {
    return $(this).css('display') !== 'none';
  }).length;
  countFilled = $('input[type="checkbox"]').filter(function() {
    return ($(this).prop('checked') == true && $(this).parent().css('display') !== 'none' );
  }).length;

  countPerc = (countFilled*100)/countAll;
  $('#progressbar').css('width', countPerc + '%');
  $('#progressText').text(countFilled + ' / ' + countAll);
}

问题是这个片段:

代码语言:javascript
复制
countFilled = $('input[type="checkbox"]').filter(function() {
    return ($(this).prop('checked') == true && $(this).parent().css('display') !== 'none' );
}).length;

HTML看起来是这样的:(这是不算的)

代码语言:javascript
复制
<div class="form-border transition-2" style="display: none;">
<div class="row">
    <div class="col-xs-10">
        <p class="form-header">Bundesland</p>
        <p class="form-answer">
        <select id="EF3" name="EF3" class="form-select-style form-input-style">
            <option value="1">Test</option>
        </select>
    </div>
    <div class="col-xs-2 text-right">
        <input type="checkbox" name="deleteEF3" id="deleteEF3" class="form-delete-checkbox" checked="checked">
    </div>
</div>

(这是计数)

代码语言:javascript
复制
<div class="form-border transition-2">
<div class="row">
    <div class="col-xs-10">
        <p class="form-header">Bundesland</p>
        <p class="form-answer">
        <select id="EF2" name="EF2" class="form-select-style form-input-style">
            <option value="1">Test</option>
        </select>
    </div>
    <div class="col-xs-2 text-right">
        <input type="checkbox" name="deleteEF2" id="deleteEF2" class="form-delete-checkbox" checked="checked">
    </div>
</div>

结果总是2,而不是1。

我希望你能帮我解决这个问题!

打招呼。

https://jsfiddle.net/Lwrqy6qt/3/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-10 14:41:12

我不确定过滤器函数中的$(this)是否指的是元素。

尝试将筛选器函数更改为

代码语言:javascript
复制
  countFilled = $('input[type="checkbox"]').filter(function(i,element) {
      return ($(element).prop('checked') == true && $(element).parent().height() > 0 );
  }).length;
票数 1
EN

Stack Overflow用户

发布于 2016-09-10 15:47:29

使用jQuery,很容易选择复选框,该复选框是可见div的子元素:

代码语言:javascript
复制
$('div:visible > input[type=checkbox]:checked');

请注意,自从版本3发布以来,*可见选择器发生了重大变化:

jQuery 3稍微修改了:可视(因此是:隐藏的)的含义。从这个版本开始,元素将被考虑:如果它们有任何布局框,包括零宽度和/或高度的布局框,则它们是可见的。例如,不含任何内容的br元素和内联元素将由“可见”选择器选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39427011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档