嗨,我在 for 循环中有多个按钮,我只想在单击按钮时显示一个模态,但现在,当我单击按钮时,它会显示所有模态(每个按钮有多个模态(。 如何解决问题?
each user in users
tr
td= user.email
td
.ui.basic.blue.button#more More
.ui.mini.modal.myModal
i.close.icon
.header
| #{user.email}
.content
|#{user.email}
.actions
.ui.positive.right.labeled.icon.button
| Yep!
i.checkmark.icon
Jquery
$('#more').click(function(){
$('.ui.modal.myModal').modal({
}).modal('show');
});
它显示每个模式,因为您拥有的用户有多少 #more 按钮。 如果你遵循JavaScript/HTML最佳实践,id"more"应该用于一个且只有一个元素,但正如你所看到的,这不是一个严格执行的规则。 当您使用$('#more')
作为选择器时,它会返回具有该 id 的每个按钮。
为了解决这个问题,我建议您使用一种模式,并使用onclick函数将相关详细信息传递到其中。 这会将用户的电子邮件(或 id 或其他任何东西(传递到函数中。 请注意,模态完全在表之外。 请注意,我已将#more
id更改为类.more
作为类对多个元素进行分组的正确方法。
table
each user in users
tr
td= user.email
td
.ui.basic.blue.button.more(onclick='showMore(' + user.email + ')') More
.ui.mini.modal.myModal#theModal
i.close.icon
.header
span#modalHeader
.content
span#modalContent
.actions
.ui.positive.right.labeled.icon.button Yep!
i.checkmark.icon
然后,脚本会将内容传递到模态中并显示它:
function showMore(email){
$('#modalHeader').html(email);
$('#modalContent').html(email);
$('.ui.modal.myModal').modal('show');
}
如果你想变得非常棘手,你可以将整个对象传递到函数调用中,然后showMore函数可以使用任何属性:
.ui.basic.blue.button#more(onclick='showMore(' + JSON.stringify(user) + ')') More
然后,该函数将如下所示:
function showMore(user){
$('#modalHeader').html(user.name);
$('#modalContent').html(user.email);
$('.ui.modal.myModal').modal('show');
}