找到attr('href')并在页面上打开隐藏的iframe,然后show()iframe(jQuery + PHP)

时间:2012-06-09 13:17:04

标签: php javascript jquery function dynamic

语言: PHP和jQuery

我尝试做的是在用户点击它时弹出动态链接 我不希望页面在新窗口中打开,但是在当前页面上覆盖的模式页面中。

因此,使用javascript,当用户点击此链接时,操作是找到链接的attr href,并使该链接的代码位于模态窗口内的iframe内。

带有动态PHP链接的 HTML

 <a href="http://www.facebook.com/share.php?u=<?php echo $root_url; ?>?id=<?php echo $rows['id']; ?>&title=<?php echo urlencode($rows['keyword']); ?>" style="border: none;" onclick="return false;" class="fblink" target="iframe"><img src="./img/Facebook.png" style="float: right; margin-top: 0px;" title="Share on Facebook" alt="Share on Facebook" id="<?php echo $rows['id']; ?>"></a>

jQuery脚本

    var makePop = function() {
    link = $(this).attr('href');
    return '<div class="the_box" id="box" style="display: block;"><a class="boxclose" id="boxclose"></a>
    <iframe src="' + link + '" height="500px" width="600px" id="" name="iframe"></iframe></div>';
    } // End of Function.

    $("a.fblink").click(makePop);

我不知道如何实现这一点......这不起作用 任何人?的:○)

2 个答案:

答案 0 :(得分:2)

从事件处理函数返回一个字符串没有意义,它不会做任何事情。

您需要实际创建模态窗口。请尝试jQuery UI

答案 1 :(得分:1)

以下内容应该提供您所寻找的内容。但是,需要考虑XHR“加载”调用的相同原始策略等问题。

见示例:http://jsfiddle.net/qeXea/2/
注意:由于相同的原始政策,iframe无法填充内容,只需在您的网站上设置您自己的网页,然后使用您自己的网址进行查看。

HTML

<a href="http://www.yoururl.com" onclick="launchUrl(this); return false;">Click Here</a>
<div id="fade"></div>
<iframe id="dialog" src=""></iframe>
<script type="text/javascript">
function launchUrl(owner) {
    $('#fade').show();
    var link = $(owner).attr('href');
    $('#dialog').load(link, function(response) {
        $('#dialog').show();
    });
}
</script>

CSS

#fade {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 100;
    display: none;
    position: absolute;
    background-color: rgba(255, 255, 255, 0.5);
}

#dialog {
    top: 100px;
    left: 100px;
    width: 200px;
    height: 200px;
    z-index: 101;
    display: none;
    position: absolute;
}

替代

HTML

<a href="" onclick="launchUrl('http://www.yoururl.com'); return false;">Click Here</a>
<div id="fade"></div>
<iframe id="dialog" src=""></iframe>
<script type="text/javascript">
    function launchUrl(link) {
        $('#fade').show();
        $('#dialog').load(link, function(response) {
            $('#dialog').show();
        });
    }
</script>