如何在单击时结束 jquery 函数

Posted

技术标签:

【中文标题】如何在单击时结束 jquery 函数【英文标题】:how to end a jquery function on click 【发布时间】:2011-07-05 01:45:30 【问题描述】:

我目前使用 jQuery slug 插件来创建基于标题框的项目 slug。这很好用。我正在做的只是在用户单击编辑链接时更新 slug。现在,当调用编辑链接时,会启动 slug 功能并且工作正常,但是当单击“完成”链接时,我需要找到一种方法来关闭 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


);

我不确定这是实现这一目标的最佳方式,我对想法持开放态度。主要是我不确定单击#done_edit_slug 时如何结束stringToSlug() 函数。

谢谢!

【问题讨论】:

【参考方案1】:

在你的 done 事件处理程序中尝试取消绑定文本框上的事件。

$('#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();
);

这是假设您使用插件源中的默认事件完成的。

【讨论】:

Welp,这很简单!谢谢,我对 jQuery 还是比较陌生。

以上是关于如何在单击时结束 jquery 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击按钮禁用 JQuery 功能,但默认保持打开状态?

jQuery在拖动时使用右键单击旋转div

在 Laravel 4 中单击按钮后如何在 jquery 中调用控制器函数

如果使用 jquery 单击按钮,如何激活弹出模式?

如何使用 jquery 在单击时切换框阴影

如何在 Web2py 中使用 jquery 将数据从视图传输到控制器操作函数