使用jQuery

时间:2016-06-10 16:34:48

标签: jquery

我在jQuery中有这个代码:

$("a.crt_albmed").click(function(){
    page = $(this).attr('alt');
    loader = "<img src='/images/al_loading.gif' width='20' height='20' />";
    $.ajax({
        type: "GET",
        url: "/for_photos/"+page,
        beforeSend: function(){
            $(this).append(loader);
        },
        success: function(grabbed){
            //$("#load_div").html(grabbed);
        }
    });
});

在给定div中加载页面。现在我的问题是这个。我希望在加载之前将字符串loader附加到链接的.html(),但问题是它不起作用。现在我尝试更改html内容,如$(this).html("good");,但它仍然没有改变。我认为此$("#myDiv").html("good");$(this).html("good");相同,但我不知道它为什么不起作用。我还是jQuery的新手。请有人知道如何使这项工作?

4 个答案:

答案 0 :(得分:2)

您可能需要设置this的上下文 - 尝试替换

beforeSend: function(){ $(this).append(loader); },

// define element before ajax call var $el = $(this); // ... // ajax call, then: beforeSend: function(){ $el.append(loader); }, //...

试一试,看看它是如何运作的。

答案 1 :(得分:0)

&#34;良好&#34;是无效的HTML,要么使用有效的html,要么使用.text()函数,即

使用:

$("#myDiv").text("good");

$("#myDiv").html("<span>good</span>");

答案 2 :(得分:0)

您在this不再是您希望的按钮的地方使用this。好的做法是将按钮保存在变量(var self = this)中,或者只需再次选择按钮($("a.crt_albmed").append(loader);)来分配html。

试试这个:

$("a.crt_albmed").click(function(){

    var self = this // This will store the button

    page = $(this).attr('alt');
    loader = "<img src='/images/al_loading.gif' width='20' height='20' />";
    $.ajax({
        type: "GET",
        url: "/for_photos/"+page,
        beforeSend: function(){
                $(self).append(loader);
        },
        success: function(grabbed){
                //$("#load_div").html(grabbed);
        }
    });
});

答案 3 :(得分:0)

beforeSend: function(){
   $(this).append(loader);
}

&#39;这&#39;在beforesend函数内部指向传递给$ .ajax的对象,如果要访问beforesend函数中当前单击的对象,请执行以下操作。

$("a.crt_albmed").click(function(){
    var clickedEle = this;
    page = $(this).attr('alt');
    loader = "<img src='/images/al_loading.gif' width='20' height='20' />";
    $.ajax({
        type: "GET",
        url: "/for_photos/"+page,
        beforeSend: function(){
            $(clickedEle).append(loader);
        },
        success: function(grabbed){
            //$("#load_div").html(grabbed);
        }
    });
});

保存引用并在beforesend中使用它,因为调用beforesend的对象是传递给$ .ajax的对象而不是被点击的元素