javascript - 如何使用 jQuery 隐藏/显示父元素
问题描述
我有一个 jquery 过滤器,它过滤包含input#box
隐藏它们的字符串的元素。我已将首字母添加到 HTML 中,并且我想在隐藏所有包含的元素时隐藏它们。我已经尝试了几种 jQuery 组合,parents
但closest
没有任何成功......
$('#box').keyup(function() {
var valThis = $(this).val().toLowerCase();
if (valThis == "") {
$('.indicazione').show();
} else {
$('.indicazione').each(function() {
var text = $(this).text().toLowerCase();
if (text.indexOf(valThis) >= 0) {
$(this).show();
} else {
$(this).hide();
$(this).parents('.indicazione_wrapper').hide(); /*This Line doesn't work*/
}
});
};
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="col-sm-12 mt-5 mb-3">
<input id="box" type="text" />
</div>
</div>
<div class="row">
<div class="col-sm-12 mt-3" id="lettera"><strong>A</strong></div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">AAA</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">ABC</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">CDE</a>
</div>
</div>
<div class="col-sm-12 mt-3" id="lettera"><strong>B</strong></div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">BBB</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">ABC</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">CDE</a>
</div>
</div>
</div>
解决方案
您的代码工作得很好,除了您调用$(this).parents('.indicazione_wrapper').hide()
隐藏该元素,但您再也没有显示它。
我在.indicazione_wrapper
这部分添加了选择器
if (valThis == "") {
$('.indicazione, .indicazione_wrapper').show();
} else { ...
然后我添加了一些 BG 颜色来显示正确的元素正在隐藏和显示。
$('#box').keyup(function() {
var valThis = $(this).val().toLowerCase();
if (valThis == "") {
$('.indicazione, .indicazione_wrapper').show();
} else {
$('.indicazione').each(function() {
var text = $(this).text().toLowerCase();
if (text.indexOf(valThis) >= 0) {
$(this).show();
} else {
$(this).hide();
$(this).parents('.indicazione_wrapper').hide(); /*This Line doesn't work*/
}
});
};
});
.indicazione_wrapper {
background: lightblue;
}
.indicazione {
background: pink;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="col-sm-12 mt-5 mb-3">
<input id="box" type="text" />
</div>
</div>
<div class="row">
<div class="col-sm-12 mt-3" id="lettera"><strong>A</strong></div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">AAA</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">ABC</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">CDE</a>
</div>
</div>
<div class="col-sm-12 mt-3" id="lettera"><strong>B</strong></div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">BBB</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">ABC</a>
</div>
</div>
<div class="col-sm-4 col-md-3 d-flex indicazione_wrapper">
<div class="card card-body flex-fill my-3">
<a class="indicazione" href="#">CDE</a>
</div>
</div>
</div>
推荐阅读
- c++ - 使用柯南包管理器在 clion 中构建 dll 项目的问题
- firebase - Bigquery 数据传输不运行
- elasticsearch - ElasticSearch 连续函数得分
- parsing - 条件拆分
- php - 如果成功,我的登录表单不会重定向我,如果失败则显示错误消息,页面只会刷新
- ethereum - web3订阅触发两次contract.events.MyEvent
- ios - 在 Swift 中创建 iOS 日历视图:如何处理重叠会议
- php - Laravel 刀片:语法错误,意外的 'endif' (T_ENDIF)
- reactjs - React - 无法读取未定义的属性“id” - 来自 Axios.get
- deep-learning - 如何创建与来自 rico 的移动应用程序数据集相同的 json 结构