this
относится к объекту варианты, а не объект JQuery. Если у вас есть поле один-офф, из которого вы хотите извлечь первичный ключ для отправки на сервер, то я бы просто сделать:
var $task = $("#task");
$task.editable({
type: 'text',
pk: $task.attr("id"),
url: '/update_task/' + pk + '/',
title: 'Enter task',
});
Если вы используете более общий селектор, например, .someDiv
и хочу pk
для каждого отдельного пользователя, вы можете использовать опцию params
с обратным вызовом, который позволяет добавлять/перезаписывать отправляемые данные в зависимости от того, передаете ли вы объект или функцию (функция перезаписывается, см. раздел docs):
$(".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'
});
ps pk
, кажется, принимает функцию, поэтому я предполагаю, что вы можете сделать это, но я не в состоянии проверить прямо сейчас:
$("#task").editable({
type: 'text',
pk: function() {
return $(this).closest("div").attr("id");
},
url: '/update_task/' + pk + '/',
title: 'Enter task'
});
Это зависит от того, из какой функции вы вызываете '$ («# задачи») .editable ({...}) 'и как вы вызываете * эту * функцию. – techfoobar
Не могли бы вы быть более конкретными? – jabez
Например: если вы вызываете '$ (« # task »). Editable ({...})' изнутри обработчика jQuery элемента, 'this' будет этим элементом. Если вы делаете это из '$ (document) .ready()', 'this' укажет на объект документа и т. Д. – techfoobar