jQuery无法找到父级

时间:2012-08-12 14:42:25

标签: jquery html

这就是我想要获得的:当你点击#edit jQuery在最近的tr td中找到名为#collapse的td时,用一个有值的输入替换它的内容以前的#collapse html。 我试过jsFiddle但没有任何成功:http://jsfiddle.net/8PDdn/1/

任何人都可以帮助我获得我想要的东西吗?

3 个答案:

答案 0 :(得分: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)
    })
});

Fiddle

答案 1 :(得分: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 +'">');
    });

});

答案 2 :(得分:0)

这里几乎没有错:

  1. id应该是唯一的,您有许多具有相同ID的元素,请将其更改为类。
  2. 您的问题是由此造成的:

    $("a#edit").click(function() {
        $(this).preventDefault(); ---> there is no preventDefault method on this
       ...
    });
    
  3. 您需要将其更改为:

    $("a#edit").click(function(e) {
            $(e).preventDefault();
           ...
        });