これが私が取得しようとしているものです#edit。jQueryをクリックすると、最も近いtrtdが検索され、そのコンテンツが前のhtml#collapseを値として持つ入力に置き換えられます。#collapsejsFiddleを試しましたが成功しませんでした:http://jsfiddle.net/8PDdn/1/
誰かが私が欲しいものを手に入れるのを手伝ってくれる?
これが私が取得しようとしているものです#edit。jQueryをクリックすると、最も近いtrtdが検索され、そのコンテンツが前のhtml#collapseを値として持つ入力に置き換えられます。#collapsejsFiddleを試しましたが成功しませんでした:http://jsfiddle.net/8PDdn/1/
誰かが私が欲しいものを手に入れるのを手伝ってくれる?
preventDefault()eventは、選択された要素ではなく、オブジェクトのメソッドの1つです。event代わりに、オブジェクトに対して呼び出す必要があります。また blur、入力のイベントを使用して、編集後にdivタグの内容を変更することもできます。
$(function() {
$("a#edit").click(function(event) {
event.preventDefault();
var currentTodo = $("#collapse");
var cVal = currentTodo.html();
currentTodo.html('<input type="text" name="description" value="'+ cVal +'">');
});
$(document).on('blur', '#collapse input', function(){
$(this).parent().html(this.value)
})
});
$(this).preventDefault();
これは、デフォルトのイベントを防ぐ方法ではありません。イベントをコールバックに渡す必要があります。
$(function() {
$("a#edit").click(function(e) {
$(e).preventDefault();
var currentTodo = $(this).closest("tr").find("#collapse");
var cVal = currentTodo.html();
currentTodo.html('<input type="text" name="description" value="'+ cVal +'">');
});
});
ここで間違っていることはほとんどありません。
id一意である必要があります。同じIDを持つ要素が多数ある場合は、クラスに変更してください。あなたの問題はこれによって引き起こされます:
$("a#edit").click(function() {
$(this).preventDefault(); ---> there is no preventDefault method on this
...
});
次のように変更する必要があります。
$("a#edit").click(function(e) {
$(e).preventDefault();
...
});