当以编程方式设置 class 时,嵌套手风琴 table 图标不会更改
Nested Accordion table icon won't change when class id set programatically
我在 Grails .gsp 页面中嵌套了手风琴 bootstrap 表格,工作正常,除了当 collapsing/expanding 时图标从“+”变为“-”。如果我取出动态 id 变量并静态设置数据目标 id 而不是使用 data-target="#${orgs.ORGN}" 和 id="${orgs.ORGN }”。当我让 g:each 循环创建 id 和数据时,图标不会改变,尽管它们会正确折叠。有什么想法吗?是否有关于动态设置 id 的东西不起作用?
<div class="col-lg-8">
<div class="panel panel-default">
<div class="panel-heading"></div>
<table class="table table-condensed" style="border-collapse:collapse;">
<thead>
<tr>
<th> </th>
<th>Org</th>
<th>Description</th>
<th>Budget</th>
<th>YTD</th>
<th>Remaining</th>
</tr>
</thead>
<tbody>
<g:each in="${overview}" var="orgs">
<tr data-toggle="collapse" data-target="#${orgs.ORGN}" class="accordion-toggle" style="cursor:pointer">
<td><i class="fa fa-plus-square"></i></td>
<td>${orgs.ORGN}</td>
<td>${orgs.ORGNTITLE}</td>
<td>${orgs.BUDGET}</td>
<td>${orgs.YTD}</td>
<td>${orgs.REMAINING}</td>
</tr>
<td colspan="8" class="hiddenRow">
<div class="accordian-body collapse" id="${orgs.ORGN}">
<table class="table table-condensed">
<thead>
<tr><th>Account</th>
<th>Title</th>
<th>Budgeted</th>
<th>YTD</th>
<th>Remaining</th>
</tr>
</thead>
<tbody>
<g:each in="${orgs.expenses}" var="budget">
<tr>
<td>${budget.ACCTCODE}</td>
<td>${budget.ACCTTITLE}</td>
<td>${budget.BUDGETACCEPTED}</td>
<td>${budget.YTDACTIVITY}</td>
<td>${budget.BUDGETREMAINING}</td>
</tr>
</g:each>
</tbody>
</table>
</div>
</td>
</g:each>
</tbody>
</table>
</div>
</div>
我的 JS 是
$('tr').on('shown.bs.collapse', function(){
$(this).prev('tr').find(".fa-plus-square").removeClass("fa-plus-square").addClass("fa-minus-square");
}).on('hidden.bs.collapse', function(){
$(this).prev('tr').find(".fa-minus-square").removeClass("fa-minus-square").addClass("fa-plus-square");
});
感谢您的帮助。
听起来您正试图在 DOM 完全加载之前 运行 您的 jQuery 代码。我建议在 jQuery documentation 中查看执行此操作的各种方法。通常这是使用 $( document ).ready()
.
完成的
我在 Grails .gsp 页面中嵌套了手风琴 bootstrap 表格,工作正常,除了当 collapsing/expanding 时图标从“+”变为“-”。如果我取出动态 id 变量并静态设置数据目标 id 而不是使用 data-target="#${orgs.ORGN}" 和 id="${orgs.ORGN }”。当我让 g:each 循环创建 id 和数据时,图标不会改变,尽管它们会正确折叠。有什么想法吗?是否有关于动态设置 id 的东西不起作用?
<div class="col-lg-8">
<div class="panel panel-default">
<div class="panel-heading"></div>
<table class="table table-condensed" style="border-collapse:collapse;">
<thead>
<tr>
<th> </th>
<th>Org</th>
<th>Description</th>
<th>Budget</th>
<th>YTD</th>
<th>Remaining</th>
</tr>
</thead>
<tbody>
<g:each in="${overview}" var="orgs">
<tr data-toggle="collapse" data-target="#${orgs.ORGN}" class="accordion-toggle" style="cursor:pointer">
<td><i class="fa fa-plus-square"></i></td>
<td>${orgs.ORGN}</td>
<td>${orgs.ORGNTITLE}</td>
<td>${orgs.BUDGET}</td>
<td>${orgs.YTD}</td>
<td>${orgs.REMAINING}</td>
</tr>
<td colspan="8" class="hiddenRow">
<div class="accordian-body collapse" id="${orgs.ORGN}">
<table class="table table-condensed">
<thead>
<tr><th>Account</th>
<th>Title</th>
<th>Budgeted</th>
<th>YTD</th>
<th>Remaining</th>
</tr>
</thead>
<tbody>
<g:each in="${orgs.expenses}" var="budget">
<tr>
<td>${budget.ACCTCODE}</td>
<td>${budget.ACCTTITLE}</td>
<td>${budget.BUDGETACCEPTED}</td>
<td>${budget.YTDACTIVITY}</td>
<td>${budget.BUDGETREMAINING}</td>
</tr>
</g:each>
</tbody>
</table>
</div>
</td>
</g:each>
</tbody>
</table>
</div>
</div>
我的 JS 是
$('tr').on('shown.bs.collapse', function(){
$(this).prev('tr').find(".fa-plus-square").removeClass("fa-plus-square").addClass("fa-minus-square");
}).on('hidden.bs.collapse', function(){
$(this).prev('tr').find(".fa-minus-square").removeClass("fa-minus-square").addClass("fa-plus-square");
});
感谢您的帮助。
听起来您正试图在 DOM 完全加载之前 运行 您的 jQuery 代码。我建议在 jQuery documentation 中查看执行此操作的各种方法。通常这是使用 $( document ).ready()
.