AJAX添加的字段的事件处理程序

时间:2017-01-06 08:32:01

标签: javascript jquery ajax javascript-events event-handling

我有一个包含一组复选框的表单,可以进行多项选择。 (下面的代码段)。

由于生成内容所花费的时间,表单的内部HTML由AJAX添加,因此用户最初会看到一个空白表单,几秒钟后会看到其内容。

问题是复选框需要“onchange()”事件。对于容易的静态字段 - 我可能会给它们所有相同的类,然后使用jQuery $(".mychkboxes").on("change", my_event_handler);

对于动态添加的字段,我从其他问题中收集,我需要使用事件委托,我不太自信,所以我在AJAX处理程序的字段定义中添加了onchange="my_event_handler();",当然,填充表单时,处理程序功能已存在于浏览器的网页中。

但正在发生的事情是,如果我执行"onchange=\"alert('test'); my_event_handler();\" ",警报会触发,因此我知道它正在运行,但my_event_handler()永远不会被调用,尽管它存在且未以编程方式添加。

我无法弄清楚原因。或者,我如何在jQuery中以编程方式添加处理程序,因此我可以比较两种方法。

相关的javascript(由于其他原因使用events.push,如果相关):

<script type="text/javascript">
//<![CDATA[
events.push(function() {

    function my_event_handler() {
        alert("handler entered");
    }

    ... ajax success handler relevant line...
    $('#myform_div').html(data.form_html);

});
//]]>
</script>

data.form_html包含此代码段(显然,如果通过委派以编程方式完成,则不需要此处的处理程序调用):

<div id="mydiv">
<input class="chk_mycheckboxlist" name="chk_mycheckboxlist[]" onchange="alert('event triggered'); my_event_handler();" id="chk_mycheckboxlist_item998" type="checkbox" value="998">

...

<input class="chk_mycheckboxlist" name="chk_mycheckboxlist[]" onchange="alert('event triggered'); my_event_handler();" id="chk_mycheckboxlist_item999" type="checkbox" value="999">
</div>

0 个答案:

没有答案