0

すべてのユーザーに表示されるページにギャラリーがある Wordpress サイトがあります。

アイデアは、非メンバーがギャラリーのサムネイルをクリックすると、サインアップ ページにリダイレクトされるというものです。ユーザーログインしている場合、画像は通常どおりライトボックスに表示されます。

私はこのjQueryコードで遊んでいますが、preventDefaultビットが機能しません.条件内にあるためだと思います.

$('.ngg-gallery-thumbnail a').on('click', function(event){

        if (!$('body').hasClass('logged-in')) {
            alert('Not logged in!');
            event.preventDefault();
        }
    });

また、PHPを使用してこれを行うより安全な方法があると確信しています-誰かが私を正しい方向に向けることができれば、私は最も感謝しています!

4

2 に答える 2

1

のようにしてみてください

$('.ngg-gallery-thumbnail a').on('click', function(event){
    event.preventDefault();
    if (!$('body').hasClass('logged-in')) {
        alert('Not logged in!');
        return false;
    }
    $(this).addClass('lightbox');
});

前にライトボックスクラスを指定しないでください。まず条件を確認し、それが満たされている場合はライトボックスのクラスを追加してください

于 2013-05-07T13:56:49.417 に答える
1

on()メソッドの正しい形式は次のとおりです。

$('.ngg-gallery-thumbnail').on('click', 'a', function(){
    if (!$('body').hasClass('logged-in')) {
        alert('Not logged in!');
        return false;
    }
    return true;
});

また、preventDefault()ここで使用しているため、ここではメソッドは必要ありませんreturn false

Returnfalseは、呼び出されると 3 つのタスクを実行します。

  1. event.preventDefault();
  2. event.stopPropagation();
  3. コールバックの実行を停止し、呼び出されるとすぐに戻ります。
于 2013-05-07T14:11:09.467 に答える