как завершить функцию JQuery на клике - PullRequest
3 голосов
/ 27 февраля 2011

В настоящее время я использую плагин jQuery slug для создания проекта slug на основе поля заголовка.Это прекрасно работает.У меня возникают проблемы с обновлением слага, только когда пользователь нажимает на ссылку редактирования.Прямо сейчас, когда вызывается ссылка редактирования, запускается функция slug, и это прекрасно работает, но когда нажимается ссылка «done», мне нужно найти способ отключить функцию slug.Я надеюсь, что в этом есть смысл.

    $('#edit_slug').click(function() {
    //allow user to edit the project slug
    $("#edit_project_name").stringToSlug({  //this is the slug plugin
        getPut: '.project_slug',
        hide: false
    });
    $('input.project_slug').show(); //show the input
    $('input.project_slug').next("span").remove().end(); //remove the span with the slug
    $('#edit_slug').hide(); //hide edit link
    $('input.project_slug').after(" <a href='#' id='done_edit_slug'>Done</a>"); //show done link 
});

//if the user is done editing the slug show the span with the slug in it
$('#done_edit_slug').live('click', function() {
        $("#edit_project_name").stringToSlug().end(); //my attempt to make the function end
        $('input.project_slug').after("<strong><span>"+$('input.project_slug').val()+"</span></strong>"); //show the slug as a span
        $('input.project_slug').hide(); //hide the input box
        $('#done_edit_slug').remove().end(); //remove done link
        $('#edit_slug').show(); //show edit link


});

Я не уверен, что это лучший способ добиться этого, и я открыт для идей.Главное, я не уверен, как завершить функцию stringToSlug() при нажатии #done_edit_slug.

Спасибо!

1 Ответ

1 голос
/ 27 февраля 2011

В обработчике готового события попробуйте отменить привязку событий в текстовом поле.

$('#done_edit_slug').live('click', function() {
        $("#edit_project_name").unbind("keyup keydown blur");
        $('input.project_slug').after("<strong><span>"+$('input.project_slug').val()+"</span></strong>");
        $('input.project_slug').hide();
        $('#done_edit_slug').remove().end(); 
        $('#edit_slug').show();
});

Это делается при условии, что вы используете события по умолчанию в источнике плагина.

...