0

私の目標は、ユーザーが連絡先ページのリンクをクリックしたときにのみ、recaptcha を読み込むことです。

次の関数に基づいて、ナビゲーション リンクを使用して外部 HTML コンテンツをインデックス ページのメイン コンテンツ div にロードするサイトを正常に構築しました。

$('div#index_content').load($(this).attr('href') + ' #content');

ユーザーがナビゲーション リンクをクリックすると、6 つの個別の .html または .php ファイルのいずれかのコンテンツが index.html コンテナーに読み込まれます。

<div id="menu">
    <ul>
        <li><a href="home.html" class="active">Home</a></li>
        <li><a href="fine_art.html" class="inactive">Fine Art</a></li>
        <li><a href="sketches.html" class="inactive">Sketches</a></li>
        <li><a href="props.html" class="inactive">Props</a></li>
        <li><a href="contact.php" class="inactive">Contact</a></li>
    </ul>
</div>

これはすべて 100% 機能します。

次のステップは、連絡先フォームの id="captcha" を使用して recaptcha を空の div にロードする関数を .load ステートメントに追加することでした。

$('div#page_content').load(($(this).attr('href') + ' #contentB'), 
   function() {
     Recaptcha.create("my public key", "captcha"); 
   }
 );

この時点でサイトはまだ機能していますが、ナビゲーション リンクの 1 つがクリックされるたびにキャプチャを呼び出す関数が実行されます。$(this) .attr('href') は contact.php コンテンツをロードしています。言い換えれば、ユーザーがナビゲーションバーの「連絡先」をクリックしたときにのみキャプチャをロードしたいと思います。

関数の次の 2 つのバージョンを試しましたが、どちらの場合もキャプチャが読み込まれません。

$('div#page_content').load(($(this).attr('href') + ' #contentB'), 
   function() {
       if ($(this).attr('href') == 'contact.php') {
               Recaptcha.create("my public key", "captcha"); 
       }
   }
 );

と...

$('div#page_content').load(($(this).attr('href') + ' #contentB'), 
   function() {
       var ifContact = $(this).attr('href');
       if (ifContact == 'contact.php') {
               Recaptcha.create("my public key", "captcha"); 
       }
   }
 );

if() ステートメントの何が問題なのか誰か教えてもらえますか? $(this).attr('href') は実際に何かに等しい値を保持していますか?

4

1 に答える 1

1

thisが同じオブジェクトを表していない場合、href の値を内部関数の外に格納し、その値を内部関数で使用します。

var href = $(this).attr('href');
$('div#page_content').load(href + ' #contentB', 
   function() {
       if (href == 'contact.php') {
               Recaptcha.create("my public key", "captcha"); 
       }
   }
 );
于 2012-11-19T04:26:32.947 に答える