使用jQuery为表单中的所有Select元素设置相同的函数

时间:2013-04-30 23:29:19

标签: jquery html forms

我以为我想到了这一点但我必须遗漏一些东西......

编辑:事实证明我错过了一些非常简单的东西......将第一个脚本移到了标签之后,一切都运行良好!

我想通过为Web表单中的所有Select元素设置onchange处理程序来清理我的代码。我以为我可以使用jQuery来做这个......

<head>
<script type="text/javascript">
    jQuery('#myform').on('change', 'select', function() {
            var values = Sijax.getFormValues('#myform') ;
            Sijax.request('func',[values]);
            });
</script>  
</head>  

但是这种形式没有任何反应......

<form id="myform">
  <select name="one" id="one" title="one" >
    <option value="Value_11">Label_11</option>
    <option value="Value_12">Lable_12</option>
  </select>
  <select name="two" id="two" title="two" >
    <option value="Value_21">Label_21</option>
    <option value="Value_22">Lable_22</option>
  </select>
</form>  

然而,当我在select元素中使用相同的功能时,它的效果很好......我缺少什么?

<form id="myform">
  <select name="one" id="one" title="one"
    onchange="{ var values = Sijax.getFormValues('#myform') ;
            Sijax.request('func',[values]); }" >
    <option value="Value_11">Label_11</option>
    <option value="Value_12">Lable_12</option>
  </select>
  ...

原来我把脚本放在了错误的地方!一旦我将它移出并将其放入&lt; #myform&gt;元素(最后)它开始完美地运作。我想我应该能够使用一个onload处理程序在头部执行此操作,但还没有到达那里......

1 个答案:

答案 0 :(得分:0)

您需要将.on应用于容器。

所以在你的情况下选择身体。

jQuery('select').on( { change : function() {

            }},"body");

或类似的东西。

但是,on on可以在容器上运行,然后对容器中的元素应用select。这意味着jQuery不需要遍历整个页面,寻找将事件应用到并加速整个事件的元素。