1

这就是我想要得到的:当您单击#editjQuery 时,会在最近tr的 td 中找到调用#collapse,并将其内容替换为具有前一个#collapsehtml 值的输入。我在 jsFiddle 上试过但没有成功:http: //jsfiddle.net/8PDdn/1/

谁能帮我得到我想要得到的东西?

4

3 回答 3

1

preventDefault()event对象的方法之一而不是被选择的元素,你应该为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)
    })
});

小提琴

于 2012-08-12T14:46:27.813 回答
0
    $(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 +'">');
    });

});
于 2012-08-12T14:46:46.667 回答
0

这里有几件事是错误的:

  1. id应该是唯一的,您有许多具有相同 id 的元素,将其更改为 class。
  2. 你的问题是由这个引起的:

    $("a#edit").click(function() {
        $(this).preventDefault(); ---> there is no preventDefault method on this
       ...
    });
    

您需要将其更改为:

$("a#edit").click(function(e) {
        $(e).preventDefault();
       ...
    });
于 2012-08-12T14:50:08.303 回答