我已经被这个问题困扰了很长一段时间。我试图在我的 EJS 中使用 jQuery 来更改元素的属性。然而在Google上搜索了很久,还是无法解决这个问题。
正如我的标题所说,我愿意在 foreach 循环中将按钮的“id”和 div 中的“data-target”从“collapseOne”更改为“request._id”,以便属性在每次迭代中发生变化。请看下面我的代码
<% outboundList.forEach(function(requests){ %>
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button id="outboundListTitle" class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="">
<script type="text/javascript">
$('#outboundListTitle').attr("aria-controls", requests._id)
$('#outboundListTitle').attr("data-target", requests._id)
</script>
<%= requests.clientName %>_<%= requests.wareHouseLabel %>_<%= requests.oldSku %>_<%= requests.productQt %>
</button>
</h5>
</div>
<div name='outboundListContent' class="collapse show" aria-labelledby="headingOne" data-parent="#accordion" id="collapseOne" >
<script type="text/javascript">
$( "div[name~='outboundListContent']" ).attr("id", requests._id)
</script>
<div class="card-body">
----- some content ----
</div>
</div>
</div>
我尝试用 <%= request._id%> 更改属性以替换 if 和 datta-target,但这似乎不起作用。
请帮忙。
好吧,如果有人仍然面临这个问题,可以通过在变量周围使用单引号或双引号('')轻松解决。
在您的情况下,只需在变量周围加上单引号
$('#outboundListTitle').attr("data-target", '<%= request._id%>')
因为,您希望该变量的值显示在那里,因此,使用引号将首先评估该变量的值,然后进一步移动。 如需更多参考,您可以阅读docs