3

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')

動作しますが、私にとっては便利ではありません。

前もって感謝します :)

4

1 に答える 1

5

thisjQuery オブジェクトではなく、オプション オブジェクトを参照します。サーバーに送信する主キーを抽出する 1 回限りのフィールドがある場合は、次のようにします。

var $task = $("#task");
$task.editable({
    type: 'text',
    pk:  $task.attr("id"),
    url: '/update_task/' + pk + '/',
    title: 'Enter task',
});

個々のセレクターなどのより一般的なセレクターを使用している場合は、コールバックでオプションを使用でき.someDivます。これにより、オブジェクトを渡すか、関数 (関数は上書きします。ドキュメントを参照してください):pkparams

$(".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'
});
于 2013-07-21T18:11:51.777 に答える