jQuery变量故障

jQuery变量故障,jquery,variables,Jquery,Variables,我试图用.load()函数加载一些内容,下面是我的代码 $(window).load(function() { $('.spotlight').append('<div class="caption"></div>'); $('.spotlight .caption').hover(function () { $(this).animate({ top : '-=50px' }, 150)}, function () {

我试图用.load()函数加载一些内容,下面是我的代码

$(window).load(function() {

    $('.spotlight').append('<div class="caption"></div>');
    $('.spotlight .caption').hover(function () { 
         $(this).animate({ top : '-=50px' }, 150)}, function () {
         $(this).animate({ top : '+=50px' }, 150)}
    );

    $('.caption').load($(this).parent().data('who')+'.html');

});
$(窗口).load(函数(){
$('.spotlight')。追加('');
$('.spotlight.caption').hover(函数(){
$(this.animate({top:'-=50px'},150)},函数(){
$(this.animate({top:'+=50px'},150)}
);
$('.caption').load($(this.parent().data('who')+'.html');
});
但是在HTML中我有

<div class="spotlight" who="student">
      <img src="sga_small.jpg" />
</div>


<div class="spotlight" who="staff">
    <img src="sga_small.jpg" />
</div>

但它试图加载undefined.html。我该如何着手解决这个问题?
这里有一个页面链接

很可能返回未定义的页面:

$(this).parent().attr('who')

确保此父项在属性who中有一个值。

首先,您应该使用
data who=“student”
而不仅仅是
who
,这样您就可以使用
$(this.parent().data('who')+'.html'

现在,您已经更新以包含更多的代码,该漏洞更加明显
在该上下文中,此
实际上是
窗口
,因为您位于
$(窗口).load()处理程序的内部。尝试这样做:

// fires on document ready, not quite window load, but better:
$(function() {
  $('.spotlight').each(function() {
    var spot = $( this ),
        caption = $("<div class='caption'></div>").appendTo(spot);

    caption.load( spot.data('who') + '.html' );
    spot.hover(function() {
      caption.animate({ top : '-=50px' }, 150)
    }, function () {
      caption.animate({ top : '+=50px' }, 150)
    });
  });
});
//在文档就绪时触发,不完全是窗口加载,但更好:
$(函数(){
$('.spotlight')。每个(函数(){
var spot=$(此),
标题=$(“”)。附录(点);
caption.load(spot.data('who')+'.html');
spot.hover(函数(){
动画({top:'-=50px'},150)
},函数(){
动画({top:'+=50px'},150)
});
});
});
试试这个:

$('.caption').each(function() {
                       $(this).load($(this).parent().attr('who') + '.html');
                   });

您能告诉我们您从中调用
.load()
的整个事件吗?如果没有该函数的上下文,很难知道这个
是什么……你能用带有标题类的元素粘贴完整的HTML吗?抱歉,添加了其余的代码。而且我认为,
属性在任何元素上都是无效的。数据-{anythine},然而,@Koalatea-您需要在原始问题中给我们提供更多信息-请查看评论…啊,我刚刚意识到它是“window.load()”,这是我犯的一个愚蠢的错误。但是它仍然尝试加载undefined.html,除了尝试加载一次之外,它失败了两次,所以至少这样更好。@Koalatea你是否在html中使用了
数据who
属性而不是
who
??我是个白痴,忘了做那部分。谢谢你容忍我!现在工作正常。问题是它加载两个。标题的文件与它加载的文件相同,但有两个具有属性的父项,使其未定义