jquery - $(this) 不工作 x-可编辑

标签 jquery this edit-in-place

我正在尝试设置 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/

相关文章:

javascript - 在 Plus.Google.com 上触发按键

javascript - 我怎样才能发现浏览器现在已经退出了

javascript - jQuery.ajax 在 ie 中使用 'delete' 方法的问题

jquery - 如何使用 jquery 在 div 中添加带有值的文本框(就地编辑)

jquery - 在 3 行网格中 float div,中间行顶部偏移

java - 如果存在,Java 中的 this() 应该始终首先执行吗?

带有 $(this) 的 jQuery 多重选择器

javascript - 在JavaScript中使用“原型(prototype)”还是“this”?

perl - 通过 perl 脚本在文件中替换