2012-11-19 42 views
0

我的目標是僅在用戶單擊聯繫頁鏈接時才加載recaptcha。jquery AJAX if/else基於(this).attr()

我已經成功地構建了使用導航鏈接來加載外部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%。

下一步是要附加到其加載的reCAPTCHA與ID =「驗證碼」一空div我接觸形式.load語句功能:

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

該網站是在這個仍在運作點,但調用驗證碼函數運行每次點擊導航鏈接一次,我想創建一個只運行的ReCaptcha負載功能的if()語句,如果$(本).attr(「href」屬性)正在加載contact.php內容。換句話說,我想,當用戶點擊「聯繫人」,在導航欄也只加載驗證碼。

我想我的功能,這兩個版本,但驗證碼不會在任何情況下加載:

$('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"); 
     } 
    } 
); 

誰能告訴我什麼地方錯了,如果我()語句?請問$(本).attr(「href」屬性)實際上認爲可以等於什麼價值?

回答

1

this在內部函數和外部函數中不表示同一個對象,將內部函數的外部值存儲在內部函數之外,並在內部函數中使用該值。

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

你釘了它。你同時也提高了我對javascript/Jquery的理解。謝謝! –