空事件监听器:这样可以吗?

时间:2012-10-03 17:10:30

标签: javascript jquery ios mobile button

一些快速背景

我正在构建一个在某些领域使用HTML网页浏览量的iOS应用。我想确保这些页面上的html按钮看起来和感觉就像iOS按钮一样。为了实现这一点,我想要一个轻敲状态,以便在点击时按下html按钮。现在在HTML中这很容易。你只需设置一个样式:active或:hover或者其他什么。我实际上已经定义了这个。然而,在iOS中,这些州并不参与 - 至少通常情况下。所以我的目标是编写一个小脚本,在按钮上添加一个类来改变它在ontouchstart上的外观。

问题

然而,事实证明我不需要那么复杂......纯粹的意外我用以下代码进行了测试:

document.addEventListener('touchstart', function(event) {
    console.log("test");
}, true);

我很喜欢javascript& jQuery,所以我打算做的就是检查我的语法并确保在点击按钮时触发了eventListener。令我惊讶的是,按钮的:激活了css中的活动状态(以及:悬停状态)。那段代码......解决了我的问题!

我的问题

所以这是我的问题:以上代码是否有效?我的意思是,这样做不好吗?就像空的eventListener刚刚触发桌面浏览器已经提供的行为一样。使用这种方法有什么问题吗?我很绿,但我不想养坏习惯。如果这是一种糟糕的代码方式,我不想使用它。

感谢您有任何见解,你们可以帮我解决这个问题!

1 个答案:

答案 0 :(得分:1)

我个人认为空事件监听器没有任何问题(除了函数调用的开销 - 无论如何这听起来可以忽略不计)。我建议你利用jQuery的noop函数,但是如果你必须添加一个事件监听器,但却没有做任何事情:

$(document).on('touchstart', $.noop);

// or

document.addEventListener('touchstart', $.noop);