我有下面的代码,我希望创建一个IF语句,以便只为特定的HREF调用loadScript函数。但是当我尝试提醒href的值时,它会返回“Undefined”......
非常感谢, J
$(document).ready(function()
{
$('.jNav').click(function()
{
$('#sandbox').load($(this).attr('href'),function()
{
alert("From here " + $(this).attr('href') + " to here.");
loadScript();
});
return false;
});
});
答案 0 :(得分:3)
您的问题只是范围界定。在你的load()回调中,这是指你正在调用load()的元素,恰好是$('#sandbox')
,因此:no href。通常我做的是这样的:
$('.jNav').click(function()
{
var self = this;
$('#sandbox').load($(this).attr('href'),function()
{
// Notice the use of self here, as we declared above
alert("From here " + $(self).attr('href') + " to here.");
loadScript();
});
return false;
});
这样做可以确保您仍然可以访问您在load()回调中单击的内容。
答案 1 :(得分:1)
问题是上下文之一:警告中对$(this)
的调用是指$('#sandbox')
而不是$('.jNav')
。只需为您首先参考定义一个变量。
答案 2 :(得分:1)
当您进入$('#sandbox').load
的回调时,this
引用$('#sandbox')
,而不引用$('.jNav')
。如果要提醒href,请将其(或对this
的引用)保存在变量中。
$('.jNav').click(function(){
var that = this;
$('#sandbox').load($(this).attr('href'),function(){
alert($(that).attr('href'));
//...
});
}
OR
$('.jNav').click(function(){
var href = $(this).attr('href');
$('#sandbox').load($(this).attr('href'),function(){
alert(href);
//...
});
}
答案 3 :(得分:1)
$(this)
是.jNav
,但在你的回调中它现在是#sandbox
。将变量预先缓存在它呈现给你的位置,然后在任何你喜欢的地方使用它。
稍微改善Groovetrain的答案,我写道:
$('.jNav').click(function(event) {
var $self = $(this);
var href = $self.attr('href');
$('#sandbox').load(href, function() {
alert("From here " + href + " to here.");
loadScript();
});
event.preventDefault(); // better than `return false`
});
答案 4 :(得分:0)
在最内层的函数中,上下文(this
)设置为#sandbox元素。您需要事先从.jNav元素获取href属性并将其存储在变量中。
答案 5 :(得分:0)
注意你的功能的“这个”是什么。在最里面的函数中,您从$('#sandbox')
调用它,我怀疑它没有href属性。最好的解决方案可能是将href的值传递给函数或将其存储在变量中。
答案 6 :(得分:0)
$(document).ready(function()
{
$('.jNav').click(function()
{
$('#sandbox').load($(this).attr('href'),function()
{
alert("From here " + $(this).parent().attr('href') + " to here.");
loadScript();
});
return false;
});
});