-2

我搜索了很多,但我找不到答案。

在我的contact.php 我有这个代码:

<a class="mailform" href="submit.php">Click</a>

我有这个脚本,但它不起作用:

$('.mailform').click(function() {
     $.fancybox(
        {
            'autoDimensions'    : false,
            'width'                 : 350,
            'height'                : 'auto',
            'transitionIn'      : 'none',
            'transitionOut'     : 'none',
            'ajax'   : {
              cache   : false,
              url     : this.href
             }
        }
    );
});

你能帮我吗?

4

2 回答 2

1

您需要返回 false 以阻止链接通过

$('.mailform').click(function() {

     var myUrl = $(this).attr('href');

     $.fancybox(
        {
            'autoDimensions'    : false,
            'width'             : 350,
            'height'            : 'auto',
            'transitionIn'      : 'none',
            'transitionOut'     : 'none',
            'ajax'   : {
              cache   : false,
              url     : myUrl
             }
        }
    );

    return false;
});
于 2012-04-04T11:52:21.067 回答
1

this我怀疑您的问题与魔术变量的范围有关。在您的代码中,this指的是您分配给的对象文字'ajax':。为了做我认为您正在尝试做的事情,您将需要另一个临时变量。按照惯例,我们称变量为that。您还需要false从单击处理程序返回,停止浏览器跟随主窗口中的链接。

$('.mailform').click(function() {
    // Here, `this` refers to the <a> DOM element, so we create a copy of it
    // and store it in `that`
    var that = this;
    $.fancybox({
        // Now `this` refers to the object you are passing to fancybox()
        'autoDimensions': false,
        'width'         : 350,
        'height'        : 'auto',
        'transitionIn'  : 'none',
        'transitionOut' : 'none',
        'ajax'          : {
            // Now `this` refers to the object you are assigning to 'ajax':
            cache   : false,
            url     : that.href // Use `that` instead of `this`
        }
    });
    // We also need to return false, to stop the browser following the link
    return false;
});
于 2012-04-04T11:47:10.310 回答