JavaScript 在外部注册事件处理程序

标签 javascript events event-handling dom-events

我决定删除从 html 表单元素到外部文件对 JavaScript 事件的所有调用。在这样做时,我为每个项目注册了一个事件。但是,无法再使用使用“this”访问元素属性,我决定使用 event.target.value 作为 value 属性和 event.target .name 用于名称属性。我认为这不是最好的实现,因为我通过实现它得到了一些不利的结果。

下面是我实现的代码以及有关该问题的更多信息:

JavaScript 内联事件处理程序(之前)

<input type="radio" name="rdb_NewUsers" value="1" list="#{'true':'Yes','false':'No'}" onclick="configureItemsForRadioButton(this.value, this.name)"

JavaScript 注册外部事件处理程序(之后)

var configureRadioButtons = {           
            onClick:function(evt){
                evt.stopPropagation();
                console.log(evt.target.value + '||'+evt.target.name);
                configureItemsForRadioButton(evt.target.value, evt.target.name);
                
            }
    }; 
    dojo.connect(dojo.byId("rdbNewUser"), "onclick", configureRadioButtons, "onClick");

我面临的问题是,当我单击任何按钮时,它实际上会执行 console.log(evt.target.value + '||'+evt.target.name); 即使它不是按钮的注册事件。我认为使用 event.target 指的是在页面上执行的任何事件。除了 evt.target.value 之外,还可以使用什么来引用触发事件值和名称的对象。

最佳答案

如果您要避免使用像 jQuery 这样的 DOM 操作工具(我不推荐),您可以执行以下操作:

var myButton = document.getElementById("myButton");
myButton.addEventListener('click', function(){alert('Hello world');}, false);

如果您使用 jQuery(推荐),它将像这样工作:

$('#myButton').on('click', function() {alert('Hello world');});

关于JavaScript 在外部注册事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27129395/

相关文章:

asp.net - 在 JavaScript 中计算时间跨度

javascript - 按多个值过滤对象数组

javascript - 如何让javascript编辑css文件中的背景图片

java - 两个独立应用程序之间的消息通信

.net - 无法从带有事件的用户控件中添加标签页

javascript - 使用 JavaScript 将 onrightclick 属性添加到 Canvas

ios - 从 ScrollView 返回 NSArray 中的位置

tabs - Javafx - 并排选项卡 Pane 。如何查找哪个选项卡具有焦点/选择

javascript - Marionette JS : who is responsible for showing sub-applications?

javascript - 在文档中的所有元素完全加载后,触发 JS 事件的最可靠方法是什么?