2012-08-12 83 views
1

這是我想獲得:當你點擊#edit jQuery的發現在最近tr的TD叫#collapse,並與具有作爲價值以前#collapse HTML的輸入替換其內容。 我試過jsFiddle沒有任何成功:http://jsfiddle.net/8PDdn/1/的jQuery找不到父

任何人都可以幫我得到我想要的東西嗎?

回答

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

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 +'">'); 
    }); 

}); 
0

很少有東西是錯誤的位置:

  1. id應該是唯一的,你必須使用相同的ID很多元素,將其更改爲類。
  2. 您的問題是由這個原因引起:

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

你需要將其更改爲:

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