【发布时间】:2022-01-21 14:35:57
【问题描述】:
这是toggleClass of parent div not changing with onClick的后续行动
在我的 HTML 布局中,我发现我需要在记录之后而不是之前生成 div #filters,因为我需要使用 PHP 来为每个状态构建按钮。这给了我使用 jQuery .append 将#filters 移动到记录上方的#move-filters-here 的想法。但是在我过滤一个状态后,过滤器出现在记录下方,.append 无法将#filters 移动到记录上方的#move-filters-here。
.append 不能与 (document).ready 一起使用吗?
有没有其他方法可以让.append 移动#filters?
.append 是否需要在 Onclick 功能后再次“触发”?
小提琴: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');
}
});
});
.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;
}
<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>
【问题讨论】:
-
你可以使用 appendTo 或 $("#move-filters-here").append($("#filters"))
标签: javascript jquery