忍不住要分享一下一個奇怪的現象,那就是$(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裏面我們就可以通過這個變量來操作當前元素了。