$(function() {
$('#topSearchButton').on("click", function () {
$('li[type*="COMPANY"],li[type*="BRANCH"],li:contains("Companies"), li:contains("Branch")').toggle("fast");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<input id="topSearchButton" type="button" class="btn" value="click me">
<ul>
<li><h3>Companies</h3></li>
<li type="COMPANY">company1</li>
<li type="COMPANY">company2</li>
<li type="COMPANY">company3</li>
<li><h3>Branches</h3></li>
<li type="BRANCH">branch1</li>
<li type="COMPANY">branch2</li>
<li><h3>Documents</h3></li>
<li type="Documents">Documents1</li>
<li type="Documents">Documents2</li>
</ul>
此代码有效,但我想知道是否有更好或更有效的方法来查找元素?
答案 0 :(得分:1)
答案 1 :(得分:1)
我个人会为你要隐藏的任何元素添加一个类。我还会在ul
上添加一个ID,因此您在同一页面上使用其他ul
元素时不会遇到任何问题。
<input id="topSearchButton" type="button" class="btn" value="click me">
<ul id="target">
<li class="canhide"><h3>Companies</h3></li>
<li class="canhide" type="COMPANY">company1</li>
<li class="canhide" type="COMPANY">company2</li>
<li class="canhide" type="COMPANY">company3</li>
<li class="canhide"><h3>Branches</h3></li>
<li class="canhide" type="BRANCH">branch1</li>
<li class="canhide" type="COMPANY">branch2</li>
<li><h3>Documents</h3></li>
<li type="Documents">Documents1</li>
<li type="Documents">Documents2</li>
</ul>
然后使用find()
获取正确的元素:
$('#topSearchButton').on("click", function () {
$('#target').find('.canhide').toggle('fast');
});
作为旁注,我建议使用type
属性,而不是使用JQuery可以获得的data-type
属性:
var type = $('selector').data('type');