避免命名函数在coffeescript中重复代码

时间:2015-12-05 17:40:12

标签: javascript jquery ruby-on-rails coffeescript

我正在尝试在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的函数,然后将其称为两个地方,但我似乎无法使其正常工作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

$ -> 
    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()