为动态元素附加事件处理程序
attach event handler for dynamic element
我尝试为动态元素附加事件处理程序,但失败了。
这是我的一些代码。我希望事件可以通过动态元素调用。也许javascript提供了支持自动连接动态元素的事件的功能,而无需再次绑定它,例如jQuery live或on方法。我想添加功能以加载城市数据,同时选择州或省到Magento销售>订单>创建新订单页面,而无需搜索正确的javascript文件并尝试再次在其上绑定事件。
window.addEventListener('load', function(){ 函数 getCity(){ id= this.selectedIndex; 名称= this.name; getKota(id,name); } billing_address_region_id= document.getElementsByName('order[billing_address][region_id]'); shipping_address_region_id= document.getElementsByName('order[shipping_address][region_id]'); var 事件 = 新事件("更改"); billing_address_region_id[0].addEventListener('change', getCity, false); shipping_address_region_id[0].addEventListener('change', getCity, false); billing_address_region_id[0].dispatchEvent(event); shipping_address_region_id[0].dispatchEvent(event);});
谢谢吨
注意:此解决方案未经过测试。
由于目标元素是动态添加的,因此您可以做的是将更改事件处理程序注册到window
,然后查看是否有任何目标元素触发了更改事件(如果是这样),请执行操作。
window.addEventListener('change', function (e) {
var el = e.target;
if (el.name == 'order[billing_address][region_id]' || el.name == 'order[shipping_address][region_id]') {
getKota(el.selectedIndex, el.name);
}
});
您的代码仅适用于已经存在的元素。我建议使用jQuery。
使用jQuery,你可以使用"on"方法。
$('#elem').on('change', function(){
// Do stuff
});
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何在jQuery事件处理程序中存储和重用超时
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 异步处理所有事件处理程序的方法
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- 如何在事件处理程序的回调中防止Default