通过命名函数避免coffeescript中的重复代码

avoid duplicate code in coffeescript by named function

本文关键字:代码 coffeescript 函数      更新时间:2023-09-26

我试图在coffeescript中声明一个函数,该函数在文档准备就绪时和用户在搜索栏中键入内容时都会被调用。基本上,有时搜索栏会显示一个值,有时用户会键入该值。我想只在有文本的情况下显示一个"x"图标来清除搜索栏。我能弄清楚如何实现这一点的唯一方法是写两次相同的代码,一次在按键处理程序中,一次是在文档就绪时:

$ -> 
    $('.clear-search').click ->
        $(this).prev('input').val('').focus();
        $('span.clear-search').hide()
    $('#query_raw_query').keypress ->
        if $('#query_raw_query').length > 0
            $('span.clear-search').show()
        else
            $('span.clear-search').hide()
        end
    if $('#query_raw_query').length > 0
        $('span.clear-search').show()
    else
        $('span.clear-search').hide()
    end

我真正想做的只是创建一个名为check_empty之类的函数,并在两个地方都调用它,但我似乎无法使它工作。

谢谢你的帮助。

$ -> 
    someFunctionName = ->
        if $('#query_raw_query').length > 0
            $('span.clear-search').show()
        else
            $('span.clear-search').hide()
        end
    $('.clear-search').click ->
        $(this).prev('input').val('').focus();
        $('span.clear-search').hide()
    $('#query_raw_query').keypress ->
        someFunctionName()
    someFunctionName()