我以为我想到了这一点但我必须遗漏一些东西......
编辑:事实证明我错过了一些非常简单的东西......将第一个脚本移到了标签之后,一切都运行良好!
我想通过为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处理程序在头部执行此操作,但还没有到达那里......
答案 0 :(得分:0)
您需要将.on应用于容器。
所以在你的情况下选择身体。
jQuery('select').on( { change : function() {
}},"body");
或类似的东西。
但是,on on可以在容器上运行,然后对容器中的元素应用select。这意味着jQuery不需要遍历整个页面,寻找将事件应用到并加速整个事件的元素。