これが私が取得しようとしているものです#edit
。jQueryをクリックすると、最も近いtr
tdが検索され、そのコンテンツが前のhtml#collapse
を値として持つ入力に置き換えられます。#collapse
jsFiddleを試しましたが成功しませんでした:http://jsfiddle.net/8PDdn/1/
誰かが私が欲しいものを手に入れるのを手伝ってくれる?
これが私が取得しようとしているものです#edit
。jQueryをクリックすると、最も近いtr
tdが検索され、そのコンテンツが前のhtml#collapse
を値として持つ入力に置き換えられます。#collapse
jsFiddleを試しましたが成功しませんでした: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();
...
});