2

我正在使用以下代码。我想在点击时打开不同的内容。

<style>
#overlay_form {
    position: absolute;
    border: 5px solid gray;
    padding: 10px;
    background: white;
    width: 270px;
    height: 190px;
}
#pop {
    display: block;
    border: 1px solid gray;
    width: 65px;
    text-align: center;
    padding: 6px;
    border-radius: 5px;
    text-decoration: none;
    margin: 0 auto;
}
</style>

关注 javascript

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>    
<script type="text/javascript">     
$(document).ready(function () {
    //open popup
    $("#pop").click(function () {
        $("#overlay_form").fadeIn(1000);
        positionPopup();
    });

    //close popup
    $("#close").click(function () {
        $("#overlay_form").fadeOut(500);
    });
});

//position the popup at the center of the page
function positionPopup() {
    if (!$("#overlay_form").is(':visible')) {
        return;
    }
    $("#overlay_form").css({
        left: ($(window).width() - $('#overlay_form').width()) / 2,
        top: ($(window).width() - $('#overlay_form').width()) / 7,
        position: 'absolute'
    });
}

//maintain the popup at center of the page when browser resized
$(window).bind('resize', positionPopup); 
</script>

我想使用类似以下html的东西

<html>
<div>
    <a href="#" id="pop" >Product Overview</a>
    <br/>
        <div id="overlay_form" style="display:none">
            <a href="#" id="close" >Close</a>
        </div>

    <a href="#" id="pop" >User Interface</a>

        <div id="overlay_form" style="display:none">
            <a href="#" id="close" >Close</a>
        </div>
</div>

</html>

单击不同的链接时,我想在弹出窗口中打开不同的内容。

无需重复具有不同 id 的整个 java 脚本是可能的。

谢谢

4

2 回答 2

0

有很多方法可以做到这一点,但使用现有代码的最简单方法需要将大量 id 转换为类。像这样的东西:

HTML

<html>
    <div>
        <a href="#" class="pop" popup-id="popup1">Product Overview</a>

        <div class="overlay_form" id="popup1" style="display:none">
            <a href="#" class="close" >Close</a><br />
            Popup1 text.
        </div>

        <a href="#" class="pop" popup-id="popup2">User Interface</a>

        <div class="overlay_form" id="popup2" style="display:none">
            <a href="#" class="close" >Close</a><br />
            Popup2 text.
        </div>
    </div>
</html>

JS

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>    
<script type="text/javascript">     
    $(document).ready(function () {
        //open popup
        $(".pop").click(function () {
            var targetPopup = $(this).attr('popup-id');
            $("#" + targetPopup).fadeIn(1000);
            positionPopup(targetPopup );
        });

        //close popup
        $(".close").click(function () {
            $(this).closest(".overlay_form").fadeOut(500);
        });
    });

    //position the popup at the center of the page
    function positionPopup(targetPopup) {
        $("#" + targetPopup).css({
            left: ($(window).width() - $('#overlay_form').width()) / 2,
            top: ($(window).width() - $('#overlay_form').width()) / 7,
            position: 'absolute'
        });
    }

    //maintain the popup at center of the page when browser resized
    $(window).bind('resize', positionPopup); 
</script>

这种方法允许您使用 class 属性来定义更大的一组项目,这些项目共享相同的行为(以及样式:)),同时仍然支持每个弹出窗口的“唯一性”。

注意:这使用了自定义属性 ( ),除非您更新声明以包含它,popup-id否则该属性不会验证。DOCTYPE然而,许多人只是忽略了这个问题,特别是因为 HTML5 正在添加对自定义属性的支持。

编辑:忘了提。. . 由于您在此处将 ID 更改为类,因此您还需要将 CSS#pop和更新#overlay_form.pop.overlay_form.

于 2013-03-11T13:57:58.603 回答
0

首先,您不能在当前使用的同一页面上使用相同的 id 两次#pop#close并且#overlay_form在您的两个链接上,使用类或不同的 id 更新它们。

您可以div在每个a标签内添加一个存储您的内容的标签,然后在点击时显示/隐藏它?

于 2013-03-11T13:46:38.193 回答