では、始めましょう。
このコードはコンソールで正常に動作し、必要なことを実行します。
$('#tasks-table input').parent().html($('#tasks-table input').siblings('textarea').val())
しかし、そのような呼び出しでは実行さえしません。コンソールは無音です。他のすべての機能コードは適切に実行されます
updateTask.call(this, 131)
何か案は?
アップデート
これ
$('#tasks-table input').parent().html($('#tasks-table input').siblings('textarea').val())
これの一部です
updateTask.call(this, 131)
updateTask では無視されます。この命令はコンソールからは正常に機能しますが、updateTask の一部である場合は機能しません。
html は、これに典型的な行を持つ 4 行の php 生成テーブルです。
<tr>
<td><?php echo $task->id ?></td>
<td onclick='projects.editTask.call(this, <?php echo $task->id ?>)'><?php echo $task->text ?> </td>
<td><?php echo $task->status ?></td>
<td><?php echo $task->controls ?></td>
</tr>
editTask は単純な置換機能です (td の内容がテキストエリアに変換されます)。
if(block || !($(this).attr('incomplete'))) return; //only one is allowed
block = true;
if(!$(this).children('textarea').length) {
$(this).html('<textarea style="width: 100%; height: 110px;">'+$(this).html()+'</textarea><br/><input type="button" value="Сохранить" onclick="projects.updateTask.call(this, '+parseInt(id)+')" />');
}
updateTask の目的は、td 内のすべてのものを textarea のコンテンツに置き換え、updateTask の $.post コンテンツを使用して更新要求をサーバーに送り返すことです。
var text = $(this).siblings('textarea').val();
//does not work only here, but works anywhere else
$('#tasks-table input').parent().text($('#tasks-table input').siblings('textarea').val())
$.post('/projects/ajax/', {
ajax: true,
command: 'update',
id: id,
text: text }
, function() {
block = false;
});
より複雑な方法で行うと、うまくいきます。このようなより簡単な方法:
$(this).parent().html(text)
あまりにもうまくいきませんでした