是否有可能将所有 DOMS 发送到整个网站(而不仅仅是一条路由)



我有一个网页(Angular 2 中的前端(,我将一个简单的外部 JavaScript 脚本附加到索引的 HEAD.html。

现在,我想从这个外部 javascript 将一些函数附加到一些按钮的 onclick 事件。

问题是,我有很多通往这个网站的路线,在每条路线上我都有不同的按钮。

外部 javascript 显然在网页加载时初始化一次,我无法绑定属于其他路由的其他 DOMS。

例如,如果我要路由/login,并使用 idlogin 将 onclick 附加到按钮,然后刷新页面,然后确定 javascript 将起作用。

但是,如果我在路由/login并将单击附加到idregister的按钮注册(属于不同的路由,例如/register(并刷新页面,那么javascript将无法工作,因为按钮注册不属于此路由。如果我再次将路由更改为/register,javascript 将无法工作。

因此,一种可能的解决方案是,在加载外部javascript时,将所有DOM获取到所有整个网页(从所有路由(,然后绑定我想要的功能。

我能做到吗?

提前感谢!

编辑:请注意,onclick绑定到某个按钮必须在外部javascript上进行。我不会写.所有 DOM 绑定都必须在脚本上动态发生。

您需要使用事件委派。下面是有关该方法的简单示例:

/**
* Example of DOM event delegation
* @author: Georgi Naumov
* gonaumov@gmail.com for contacts and suggestions
**/
window.addEventListener('click', function(event) {
if(event.target && event.target.tagName && event.target.tagName === 'INPUT') {
console.log('button is clicked');
}
}); 

此代码段将为所有按钮执行某些操作,包括将来创建的按钮。 您可以在此处查看更多信息: 什么是 DOM 事件委派? 您可能可以使用某些条件来仅分隔所需的按钮。

请记住:
这不是角度方式。如果您在路由级别有一些解决方案,可能会更好。

相关内容

最新更新