jquery ajax 中 $(this) 不起作用

          忍不住要分享一下一個奇怪的現象,那就是$(this)與ajax的衝突。

平時用$(this)的時候感覺很方便,很爽。例如,我們可以這樣輕易獲取某個元素的value值,$(this).val();可以這樣$(this).html()獲取某個元素裏面的所有html標籤內容。但是這一切在ajax裏面都不生效。代碼如下:

$(".finish").click(function(){

        $.ajax({
             url:"/index.php/Home/MiaoManage/change_status",
             type:"POST",
             dataType:"json",
            data:{plan_id:$(this).attr("mask")},
            success:function(re){
                    alert($(this).html());
            }
    });

});

上面的代碼主要是給 class 爲finish的元素綁定一個click(點擊)事件。在點擊事件裏面我們使用了$.ajax;在ajax的success方法裏面,我們想要使用alert彈框,彈出finish這個元素內部的html標籤。但是我們用$(this)指定finish這個元素,這種用法是錯的,是不會生效的。因爲在ajax裏面不能用$(this)這種用法。代碼應該修改如下:

$(".finish").click(function(){

     var fh=$(this);

        $.ajax({
             url:"/index.php/Home/MiaoManage/change_status",
             type:"POST",
             dataType:"json",
            data:{plan_id:$(this).attr("mask")},
            success:function(re){
                   alert(fh.html());
            }
    });

});


在ajax前面先將$(this)賦值給一個變量,然後在ajax裏面我們就可以通過這個變量來操作當前元素了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章