this
指的是选项对象,而不是 jQuery 对象。如果您有一次性字段,您想从中提取主键以发送到服务器,那么我会简单地做:
var $task = $("#task");
$task.editable({
type: 'text',
pk: $task.attr("id"),
url: '/update_task/' + pk + '/',
title: 'Enter task',
});
如果您正在使用更通用的选择器,例如.someDiv
并且想要pk
为每个单独的选择器,您可以使用params
带有回调的选项,它允许您附加/覆盖要发送的数据,具体取决于您传递的是对象还是功能(功能覆盖,请参阅文档):
$(".someDiv").editable({
type: 'text',
pk: 0,
// hooray, params takes a callback so
// we can get the right context
params: function (params) {
var data = {};
data.pk = $(this).closest("div").attr("id"),
data.makesure = "You know that this will overwrite the original params object";
data.soPut = "Everything you need into it before returning";
return data;
},
url: '/update_task/' + pk + '/',
title: 'Enter task'
});
pspk
似乎也接受一个函数,所以我想你可以这样做,但我现在无法测试:
$("#task").editable({
type: 'text',
pk: function () {
return $(this).closest("div").attr("id");
},
url: '/update_task/' + pk + '/',
title: 'Enter task'
});