Заставить JEditable работать над новыми элементами (.live) - PullRequest
6 голосов
/ 10 ноября 2010

Я использую плагин JEditable для редактирования на месте.

У меня есть функция «setup», которая вызывает .editable() для всех соответствующих классов. Проблема в том, что у меня есть недавно добавленные элементы, которые я также хотел бы сделать редактируемыми. Очевидно, что, будучи недавно добавленным, .editable() никогда не вызывается к ним.

Другими словами, я ищу эффект, который дает функция jquery live(), но для функции editable().

Мой текущий обходной путь кажется мне некрасивым (redscribe_button - это кнопка, которую нужно нажать для редактирования текста):

$(".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');
});

Другими словами, я просто звоню .editable каждый раз, когда нажимается кнопка редактирования.

Есть идеи для лучшего решения?

Ответы [ 2 ]

5 голосов
/ 06 мая 2011

Я тоже пришел к этому вопросу и решил его более элегантно (ИМХО).

$('.jqEdit').live('click',function(event) {
    event.preventDefault();
    $(this).editable('save.php')
});
3 голосов
/ 10 ноября 2010

Вызов редактируемого элемента более одного раза не имеет побочных эффектов, верно? Так почему бы просто не повторять настройку каждый раз, когда что-то меняется.

...