【问题标题】:Using a loop with bootstrap to add multiple events使用带有引导程序的循环添加多个事件
【发布时间】:2016-11-24 10:20:31
【问题描述】:

我正在设计一个允许我创建公告的网站:

当我单击加号时,应该会出现一个窗口来指示更多详细信息,如下所示:

我正在尝试循环并添加一个 javascript 函数,以使每个公告中的信息出现在每个加号上。但是,我遇到了一个问题,即每个加号都显示来自第一个公告(测试 2)的信息。我的代码如下:

<% @announcements.each do |announcement| %>
<!-- sets each announcement to be 3 per row -->
<div class="col-md-4 announcement-div">
    <!-- Title and subject of the announcement -->
    <p>
        <span class="topBottom"><%= announcement.subject %></span>
        <br>
        <%= announcement.created_at.strftime("%m/%d %Y %I:%M %p") %>
    </p>
    <!-- Stars to signify important events -->
    <% if announcement.importance %>
        <h2>&#9733;</h2>
    <% end %>
    <!-- The plus sign button -->
    <button type="button" class="btn popup-btn">+</button>
    <!-- Current announcement Display Code -->
    <div id="announcementDisplayModal" class="modal">
        <span id="announcementDisplayModal-close" class="close" onclick="document.getElementById('announcementDisplayModal').style.display='none'">&times;</span>
        <div class="modal-content well modal-dimensions">
            <h3 class="cardinal borders"> <%= announcement.subject %> </h3>
        </div>
    </div>
</div>
<% end %>

还有 javascript:

<script>
// Get the modal
var modal = document.getElementById('announcementDisplayModal');

$('.popup-btn').click(function() {
    modal.style.display = "block";
});

// Get the <span> element that closes the modal
var span = document.getElementById("announcementDisplayModal-close");

// When the user clicks on <span> (x), close the modal
span.onclick = function() { 
    modal.style.display = "none";
}
</script>

关于如何解决的任何想法?我尝试将它从 getElementById 更改为按类类型获取元素并将 ID 更改为类,但这不起作用。

【问题讨论】:

    标签: javascript html ruby-on-rails sass bootstrap-modal


    【解决方案1】:

    好的,您需要注意的一件事是文档中元素的 ID 必须是唯一的。但在这种情况下,您是在重复 announcementDisplayModal

    所以要解决这个问题而不是使用 ID 选择器,试试这个,

    而不是,

    $('.popup-btn').click(function() {
        modal.style.display = "block";
    });
    

    试试,

    $('.popup-btn').click(function() {
        $(this).next().css('display', 'block');
    });
    

    【讨论】:

    • 嘿@akhil.cs 感谢您的帮助,这有效。关于关闭弹出窗口的任何建议?我有它的位置,以便我使用引导关闭类添加一个“x”按钮,但我不知道如何将打开链接到关闭。
    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    相关资源
    最近更新 更多