jQuery SELECT更改触发器

时间:2010-12-13 18:11:07

标签: jquery

我使用以下jQuery函数在DIV上执行slideDown,基于SELECT下拉列表的值:

$(function()
{
    $('#show-options').change(function(){
        if($(this).val() != '')
        {
            $('#' + $(this).val()).slideDown();
        }
    });
});

HTML:

<select id="show-options"> 
  <option value="">Select an Option</option> 
  <option value="vehicle-type">Vehicle Type</option> 
  <option value="vehicle-colour">Vehicle Colour</option> 
</select> 

<div id="vehicle-type" style="display: none;"> 
  <!--form elements in here-->
</div> 

<div id="vehicle-colour" style="display: none;"> 
  <!--form elements in here-->
</div>

现在提交表单时,需要自动显示提交前显示的所有DIV。我可以在我的PHP中检查GET变量,但是我需要模仿'change'函数的jQuery代码 - 我认为这与触发器或绑定有关。

4 个答案:

答案 0 :(得分:4)

我实际上做了很多。我发现最简单的方法是在绑定之后触发事件:

function showByVal(val) {
    $('#' + val).slideDown();
}

$(function()
{
    $('#show-options').change(function(){
        if($(this).val() != '')
        {
            showByVal($(this).val());
        }
    });

    showByVal('<? echo $_GET["PreviousVal"]; ?>');
});

只要提前设置了值(通过PHP代码),就会在绑定并设置初始显示后触发事件。

答案 1 :(得分:1)

试试这个:

$("#" + $("#show-options :selected").val()).slideDown();

当然你必须在php中将所选属性写入正确的选项

答案 2 :(得分:0)

如果您是为了响应表单提交而执行此操作,为什么不在为已显示的内容呈现页面时简单地显示DIV(即,不使样式“display:none;”)。你需要保持跟踪,使用隐藏字段是单向的,或者只显示那些已经显示并且在所选部分中有一个项目的部分。无论哪种方式,您都可以使用从表单中获得的输入来确定哪些部分具有要显示的默认可见性集。

答案 3 :(得分:0)

每当我需要做这样的事情时,我会做$('#ele').trigger('change')因此不必做任何特别的事情,所以当页面加载时它只会触发选择列表的更改事件,只要正确的值是设置页面加载后调用已定义的更改处理程序。