2012-08-07 111 views
2

我試圖用$ .get替換其更新版本的div。我正在做這樣的事情:

$('.clickable').click(function() { 
    $.get(url, function(data) { 
     $(this).replaceWith(data); 
    }); 
}); 

但它似乎並沒有工作。我猜這個$(這個)不喜歡​​這樣改變,或者它應該工作嗎?如果我不想通過搜索數據來檢索當前div的屬性值,有可能嗎?

編輯:刪除$.get(url + ' #' + $(this).attr('id'),因爲它看起來$ .get的行爲不像load()實際。因此,被替換的div將顯示整個數據......如果有人有適當的解決方案來選擇部分數據,我將不勝感激。添加評論或其他內容。

回答

1
$('.clickable').click(function() { 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(this).replaceWith(data); // here 
    }); 
}); 

在回調的範圍,this指回調本身。使用另一個變量臨時存儲可點擊:

$('.clickable').click(function() { 
    var that = this; 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(that).replaceWith(data); 
    }); 
}); 
1

在你$.get功能,有一個新的範圍,所以this是不是有什麼this以前。你可以在一個變量保存此:

$('.clickable').click(function() { 
    var elem = this; 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(elem).replaceWith(data); 
    }); 
}); 
1

這是指獲取對象,您可以將其設置爲標識調用取得動作之前 即

$('.clickable').click(function() { 
    var replaceable = this; 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(replaceable).replaceWith(data); 
    }); 
});