我正在尝试设置 pk 的动态检索,但此选择器不起作用,这是我的代码:
#html file
<div id="{{task.id}}">
<h3>
<a href="#" id="task">{{ task.task }}</a>
</h3>
...
</div>
#js file
$("#task").editable({
type: 'text',
**pk: $(this).closest('div').attr('id'),**
url: '/update_task/' + pk + '/',
title: 'Enter task',
});
这个不起作用,但如果我写:
pk: $("#task").closest('div').attr('id')
可以,但对我来说不方便。
提前谢谢你:)
最佳答案
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'
});
附: pk
似乎也接受一个函数,所以我想你可以这样做,但我现在无法测试:
$("#task").editable({
type: 'text',
pk: function () {
return $(this).closest("div").attr("id");
},
url: '/update_task/' + pk + '/',
title: 'Enter task'
});
关于jquery - $(this) 不工作 x-可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775206/