1

我正在尝试使用 jquery 构建以下操作:当用户单击链接时,mainContent div 被隐藏并显示 exitSite 消息。然后用户有两个选择:返回主要内容或继续并离开站点。

当前问题:单击将离开站点的链接时,没有任何反应。

这是我到目前为止的代码:

jQuery:

$(function(){

if($('div#exitSite'))
{
    var mydomain$ = location.hostname;
    var links = $('a').each(function()
    {
        if((this.href.indexOf("mySiteDomain")==-1) && (this.href.indexOf(mydomain$)==-1) && (this.href.indexOf("javascr")==-1))
            $(this).addClass('exit');
    });

    /*Off site links.*/     
    $('a.exit').live('click', function (e) {
        e.preventDefault(); //stop the click from going through.
        var page = $(this).attr("href") //get destination page
        var pagetitle = $(this).attr("title")

        $('#mainContent').hide(); //hide main content window
        $('#mainContent').show(); //show main content window

        $('#exitSiteClose').click(function() { 
            $('#exitSite').hide();
            $('#mainContent').show();
            return false
            }); // end click #exitSiteClose

        $('#exitSiteContinue').click(function() {
            window.location=page
            //if user selects the continue button, then pass in the destination page from link.
            }); // end click #exitSiteContinue      
    });// end click a.exit  
}
});

的HTML:

离开网站的链接: 点击到 stackoverflow.com

出口站点 div:

<div id="exitSite">
<h2>Hello!</h2>
<p><strong>You are leaving this website</strong></p>
    <div class="buttonContainer">
    <a href="#" id="exitSiteClose" class="btn-gray">Cancel</a>
    <a href="#" id="exitSiteContinue" class="btn-blue">Continue</a>
</div><!-- /.buttonContainer -->
</div><!-- /#exitSite -->
4

2 回答 2

0

您的代码中有一个基本的错字。你根本没有显示你的#exitSitediv :

$('#mainContent').hide(); //hide main content window
$('#mainContent').show(); //show main content window

需要是:

$('#mainContent').hide(); //hide main content window
$('#exitSite').show(); //show exit confirmation window

演示:http: //jsfiddle.net/jtbowden/fhFxU/1/

为了调试,我console.log("debug")在点击处理程序内部使用并在 FireBug 中观察是否正在调用点击处理程序。然后我在脑海中逐步执行该函数,看看会发生什么。就在那时我注意到你从来没有显示你的退出确认。

作为旁注,您在处理程序中的变量定义之后还缺少几个分号。

于 2012-05-01T18:22:58.257 回答
0

您可以简单地使用 JavaScript confirm()。它并不时尚,但它是做你想做的最普遍的方式。

$('a[href^="http://"]').on('click', function(e) { // apply to all external URLs
    return window.confirm('Are you sure you want to leave this site?');
});

从广义上讲,任何return false;来自点击处理程序的 JavaScript 函数都将取消该点击,并return true;允许它继续。

一种侵入性较小且更常见的方法是添加target="_blank"到任何外部链接。这将在新选项卡/窗口中打开该链接,使您的网站在单独的选项卡/窗口中打开。

于 2012-05-01T18:17:01.400 回答