-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 に答える