我可以将HTML元素绑定到js函数吗(而不是其他方式)
Can I bind an HTML element to a js function (rather than other way around)?
使用jQuery,我可以在HTML 中执行类似操作
<button id="click_me" type="button">Hello</button>
这个在js 中
$('#click_me').on('click', function() {alert('Hello')});
但我想以另一种方式进行关联。例如,HTML 中的类似内容
<button function="click_me" type="button">Hello</button>
这个在js 中
function click_me() {alert('Hello')};
有没有任何本地方法可以做到这一点,或者有一个库/框架可以做到(我只知道一点点jQuery(?将参数传入click_me怎么样?如果click_me是其他名称空间的成员(即click_me不是全局名称(,我该如何告诉HTML这个名称空间?如果我以jQuery的方式进行操作,那么我最终会得到与之一样多的事件侦听器吗?(我会有很多事件监听器,如果使用jQuery,我更喜欢事件委派(
您可以使用所谓的"传统事件注册",这就是@user3218194评论和Tsalikidis的回答。但在现代web开发中不建议使用它,因为它混合了页面的表示和逻辑,并且在过去造成了很多维护问题(更不用说无法为相同的事件类型注册更多的事件侦听器(。
如果您真的无法忍受注册侦听器,请使用事件委派:
<button data-behavior="click_me" type="button"></button>
jQuery:
$(document).on("click", "button[data-behavior='click_me']", function() {
// Note: when using event delegation in jQuery, the keyword 'this' refers to the
// target element, not the element 'on' has been called on (document in this case)
alert("Hello, " + this.tagName); // should alert "Hello, BUTTON"
});
如果一次性执行此操作,即使是新添加的带有data-behavior="click_me"
的按钮也会触发事件侦听器。
通过这种方式,您为元素附加了一个语义属性,然后由脚本进行管理。
<button onclick="javascript: click_me()"></button>
<script>
function click_me() { }
</script>
- 实时预览
相关文章:
- 如何“;过滤器”;或者以其他方式重构该数据
- 别名或以其他方式合并两个具有不同名称的相同对象原型
- 将不同上传的文件显示为缩略图或任何其他方式
- 将DIV包裹在锚标签内或其他方式
- 如何使用cURL或其他方式在点击时执行事件
- 是否可以在JqGrid中按字母顺序以外的其他方式对组进行排序
- 如何使用 PHP 以外的其他方式解析 RSS 提要
- 使用 Curl 或其他方式检索完全呈现的页面
- 在循环或以其他方式动态创建 JSON 对象中的属性
- Javascript:与正则表达式或其他方式进行比较
- 角度重定向到其他方式而不检测视图,但当我单击后退按钮时它可以工作
- 将 HTML 表转换为下拉列表(或以其他方式获取带有列的选择标记)
- 运行javascript以外的其他方式:从url
- Packery - jquery show/hide有效,但不能以其他方式工作
- 聚合来自mongodb,map reduce或任何其他方式的数据
- 从链接打开窗口(模式或其他方式),并使用代码隐藏中的数据加载它
- 添加文本框或其他方式
- EXTJS 6.x到4.x以图形或其他方式查看组件的分层
- 获取浏览器信息的任何其他方式,而不是检索UserAgent
- chrome扩展无法使用内容脚本和其他方式从谷歌加载外部javascript