2010-11-10 17 views
6

Tôi đang sử dụng plugin JEditable để chỉnh sửa tại chỗ.Làm cho JEditable hoạt động trên các phần tử mới (.live)

Tôi có chức năng "thiết lập" gọi .editable() trên tất cả các lớp có liên quan. Vấn đề là, tôi có các phần tử mới được thêm vào mà tôi cũng muốn chỉnh sửa. Rõ ràng, mới được thêm vào, .editable() không bao giờ được gọi trên chúng.

Nói cách khác, tôi đang tìm cách có được hiệu ứng mà hàm live() của jquery thực hiện, nhưng đối với hàm editable().

workaround hiện tại của tôi dường như kinda xấu xí với tôi (redscribe_button là nút mà cần phải được bấm để chỉnh sửa văn bản):

$(".redescribe_button").live("click", function(click_event) { 
    click_event.preventDefault(); 

    $(".editable", $(this).parent().parent()).editable("/temp/", { 
     event: "make_editable", 
     indicator : 'Saving...', 
     tooltip : 'Click to edit...' 
    }); 

    $(".editable", $(this).parent().parent()).trigger('make_editable'); 
}); 

Nói cách khác, tôi chỉ gọi .editable mỗi lần chỉnh sửa nút được nhấp.

Bất kỳ ý tưởng nào để có giải pháp tốt hơn?

Trả lời

3

Gọi có thể chỉnh sửa nhiều lần trên một phần tử không có tác dụng phụ bất lợi, phải không? Vì vậy, tại sao không chỉ cần làm lại thiết lập mỗi khi có bất cứ điều gì thay đổi.

+0

Đó là hiệu quả những gì tôi đang làm, ngoại trừ thay vì làm lại nó cho tất cả mọi người, tôi đang làm lại nó (hoặc làm lần đầu tiên) trên phần tử vừa nhấp. Tuy nhiên, nó cảm thấy sai. –

+1

Nó hoạt động, và nó giữ mã đẹp và gọn gàng. Nó không bị phá vỡ, vì vậy không cần phải sửa chữa nó. –

5

Tôi cũng đã đưa ra câu hỏi này và giải quyết nó một cách thanh lịch hơn (IMHO).

$('.jqEdit').live('click',function(event) { 
    event.preventDefault(); 
    $(this).editable('save.php') 
}); 
Các vấn đề liên quan