簡體   English   中英

為動態元素附加事件處理程序

[英]attach event handler for dynamic element

我嘗試為動態元素附加事件處理程序,但失敗了。

這是我的一些代碼。 我希望事件可以通過動態元素調用。 也許javascript提供了自動支持動態元素附加事件的功能,而無需再次綁定它,例如jQuery live或on方法。 我想添加功能以在選擇Magento Sales>訂單>創建新訂單頁面時加載州或省的城市數據,而不必搜索正確的javascript文件並嘗試再次綁定事件。

window.addEventListener('load', function(){
    function getCity(){
        id= this.selectedIndex;
        name= 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 event = new Event('change');
    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 }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM