【问题标题】:Firing a function on page load using jQuery/Coffeescript使用 jQuery/Coffeescript 在页面加载时触发函数
【发布时间】:2014-02-13 22:17:58
【问题描述】:

我有一个表单,可以根据用户所做的选择显示或隐藏元素。当表单验证失败时,我需要这些元素根据之前的选择在页面加载时显示或隐藏。

我的代码看起来有点像这样:

ready = ->
  $(".radio-button").on "ready change", ->
    value = $(this).val()
    if value != true
        $("#some-element").show();
    else
        $("#some-element").hide();

$(document).ready(ready)
$(document).on('page:load', ready)

更改处理程序工作正常,但就绪处理程序永远不会触发。我猜这与在 jquery 可以绑定自己的处理程序之前完成准备动作有关?

【问题讨论】:

    标签: jquery dom coffeescript


    【解决方案1】:

    将“就绪”事件附加到 .radio-button 选择器的目的是什么?我不太确定这是否有效。无论如何,请尝试以下操作。

    ready = ($) ->
        changeEvent = (e) ->
            value = $(this).val()
            if value is not true
                $("#some-element").show()
            else
                $("#some-element").hide()
        $(".radio-button")
            .on("change", changeEvent)
            .each -> $(this).change()
    
    jQuery ready
    

    这会将更改事件绑定到选择器,然后立即为每个元素触发该事件。

    【讨论】:

    • 目的是根据之前的输入显示或隐藏页面加载时的元素(即当表单验证失败时)。我最终不得不将函数声明为变量并使用 $(".element").ready(var_function).change(var_function) - 这还不错,但这意味着必须将我的代码分开。
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多