我的目标是仅在用户点击联系页面链接时加载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%的功能。
下一步是在.load语句中添加一个函数,该函数将recaptcha加载到我的联系表单的id为“captcha”的空div中:
$('div#page_content').load(($(this).attr('href') + ' #contentB'),
function() {
Recaptcha.create("my public key", "captcha");
}
);
此时网站仍然正常运行,但是每次单击其中一个导航链接时,调用验证码的函数都会运行,我想创建一个只运行recaptcha加载函数的if()语句,如果$ (this).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");
}
}
);
有人能告诉我if()语句有什么问题吗? $(this).attr('href')实际上是否包含一个可以等于某个值的值?
答案 0 :(得分: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");
}
}
);