即使重新加载表单也附加事件

时间:2014-06-25 18:50:09

标签: jquery events bind

我正在使用jQuery在加载表单的隐藏元素#cs_contre时触发函数:

$(document).ready(function() 
{
    $('#cs_contre').gentleSelect
    ({ 
        hideOnMouseOut: false
    });
});

HTML:

<select id="cs_contre" multiple="multiple" style="display: none;">
          <option value="ES">Spain</option>
          <option value="SE">Sweden</option>
          <option value="UK">United Kingdom</option>
</select>

当重新加载我的表单act_form时,我认为该事件不再受约束。我知道我可以使用on事件将事件绑定到我的控件上,无论发生什么:

$('#act_form').on('click', '#cs_contre', function()
{
    gentleSelect({ hideOnMouseOut: false });
});

但是我想调用的函数没有click事件,所以我不知道如何调整上面的代码。我尝试了load事件,但它不起作用。 另外,以我的方式调用函数是否正确?

该功能来自gentleSelect项目: http://shawnchin.github.io/jquery-gentleSelect/

要了解我在做什么,请点击上面链接开头的“选择一些水果”按钮。此函数以更漂亮的方式显示<select multiple=multiple></select>(许多列...)。 #cs_contre是隐藏的选择控件。项目的jquery创建了一个按钮来打开一个下拉列表,该列表本身填充了#cs_contre元素。

如果不清楚,如果你有时间,请阅读上面的链接:)。

使用此代码:

$(document).on('load', '#act_form', function()
{
    alert("load");
});

我没有看到警报,似乎表格从未加载,但我可以看到它!有什么问题?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:):每次重新加载表单时都会调用该函数:

/* display select button with hidden drop down lists for adopt variables */
function display_adopt_variables()
{
    $('#cs_contre').gentleSelect
    ({ 
        hideOnMouseOut: false
    });
}


$(document).ready(function() 
{
    display_adopt_variables()        
});



//reset act form
function reset_act_form()
{
    ...    
    display_adopt_variables()
}

Voilà! :)