这是父级div的toggleClass的后续内容,不会随着onClick而改变
在我的 HTML 布局中,我发现我需要#filters在记录之后而不是之前生成 div,因为我需要使用 PHP 为每个状态构建按钮。.append这给了我使用 jQuery将 #filters 移动到记录上方的 #move-filters-here 的想法。但是,在我对某个状态进行筛选后,筛选器出现在记录下方,并且.append无法将 #filters 移动到记录上方的 #move-filters-here。
尚未.append使用(文档)。准备好了吗?
有没有不同的方法来.append移动#filters?
.appendOnclick 函数之后是否需要再次“触发”?
小提琴: https: //jsfiddle.net/j3semt6h/10/
$(document).ready(function(){
$("#filters").append("#move-filters-here");
$('.state-button').on('click', function() {
let _this = $(this);
if (!_this.hasClass('active')) {
$('.state-button.active, .record.active').removeClass('active');
$('[data-state=' + _this.data('state') + ']').addClass('active');
}
});
});Run Code Online (Sandbox Code Playgroud)
.record {
display: none;
}
.state-button {
border: 2px solid #c2c2c2;
padding: 5px;
border-radius: 5px;
margin: 0 10px 0 10px;
}
.state-button.active {
border-color: red;
}
.record.active {
display: block;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="move-filters-here"></div>
<div class="record" data-state="AK">
<h1 class="name">Customer 1</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: 345 Cow Town, Anchorage, <span class="state">AK</span></li>
</ul>
</div>
<div class="record" data-state="AR">
<h1 class="name">Customer 2</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: Mobile, <span class="state">AR</span></li>
</ul>
</div>
<div class="record" data-state="CA">
<h1 class="name">Customer 3</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: Los Angeles <span class="state">CA</span></li>
</ul>
</div>
<div class="record" data-state="AZ">
<h1 class="name">Customer 3</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: Flagstaff <span class="state">AZ</span></li>
</ul>
</div>
<div class="record" data-state="UT">
<h1 class="name">Customer 3</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: SLC <span class="state">UT</span></li>
</ul>
</div>
<div id="filters">
<button class="state-button state-button-ak" data-state="AK">Alaska</button>
<button class="state-button state-button-ar" data-state="AR">Arkansas</button>
<button class="state-button state-button-ca" data-state="CA">California</button>
<button class="state-button state-button-ca" data-state="AZ">Arizona</button>
<button class="state-button state-button-ut" data-state="UT">Utah</button>
</div>Run Code Online (Sandbox Code Playgroud)
我假设您append对感到困惑appendTo。现在您正在将文字文本附加"#move-filters-here"到#filters元素的内容中。如果您使用$('#filters').appendTo('#move-filters-here')它,它会起作用。
$(document).ready(function(){
$("#filters").appendTo("#move-filters-here");
$('.state-button').on('click', function() {
let _this = $(this);
if (!_this.hasClass('active')) {
$('.state-button.active, .record.active').removeClass('active');
$('[data-state=' + _this.data('state') + ']').addClass('active');
}
});
});Run Code Online (Sandbox Code Playgroud)
.record {
display: none;
}
.state-button {
border: 2px solid #c2c2c2;
padding: 5px;
border-radius: 5px;
margin: 0 10px 0 10px;
}
.state-button.active {
border-color: red;
}
.record.active {
display: block;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="move-filters-here"></div>
<div class="record" data-state="AK">
<h1 class="name">Customer 1</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: 345 Cow Town, Anchorage, <span class="state">AK</span></li>
</ul>
</div>
<div class="record" data-state="AR">
<h1 class="name">Customer 2</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: Mobile, <span class="state">AR</span></li>
</ul>
</div>
<div class="record" data-state="CA">
<h1 class="name">Customer 3</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: Los Angeles <span class="state">CA</span></li>
</ul>
</div>
<div class="record" data-state="AZ">
<h1 class="name">Customer 3</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: Flagstaff <span class="state">AZ</span></li>
</ul>
</div>
<div class="record" data-state="UT">
<h1 class="name">Customer 3</h1>
<ul>
<li class="focus">Focus: </li>
<li class="course">Course: </li>
<li class="business">Business: </li>
<li class="address">Location: SLC <span class="state">UT</span></li>
</ul>
</div>
<div id="filters">
<button class="state-button state-button-ak" data-state="AK">Alaska</button>
<button class="state-button state-button-ar" data-state="AR">Arkansas</button>
<button class="state-button state-button-ca" data-state="CA">California</button>
<button class="state-button state-button-ca" data-state="AZ">Arizona</button>
<button class="state-button state-button-ut" data-state="UT">Utah</button>
</div>Run Code Online (Sandbox Code Playgroud)
(或者,如果您出于某种原因想要append特别使用,则需要以相反的方式进行操作,并且实际上将要附加的内容引用为element : $('#move-filters-here').append($('#filters'))。)