0

我以为我已经解决了这个问题,但我一定错过了一些东西......

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

我想通过为 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>
  ...

原来我把剧本放错地方了!一旦我将它移出并放入 <#myform> 元素(最后)它开始完美工作。我想我应该能够在头脑中使用 onload 处理程序来做到这一点,但还没有到那里......

4

1 回答 1

0

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

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

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

            }},"body");

或类似的东西。

但是, on 对容器起作用,然后在容器内的元素上应用选择。这意味着 jQuery 不需要遍历整个页面来寻找元素来应用事件并加快整个过程。

于 2013-04-30T23:31:52.887 回答