我在网页上有一个显示表格数据的网格,每一行都有一个复选框。
在这种情况下,当单击复选框时,页面上可能会有很多反应。
此外,如果单击按钮,页面上也会有很多反应。
例如,如果有人勾选了复选框,则该行应突出显示,将显示/隐藏工具栏等。
如果有人直接点击工具栏,则类似于单击复选框时的反应。
因此,我想要做的是,每当单击复选框或工具栏按钮时,我都想“宣布”此事件已发生。
然后,根据事件源,我可以以相似或不同的方式进行反应。
如何最好地设计这样的内容?
我在网页上有一个显示表格数据的网格,每一行都有一个复选框。
在这种情况下,当单击复选框时,页面上可能会有很多反应。
此外,如果单击按钮,页面上也会有很多反应。
例如,如果有人勾选了复选框,则该行应突出显示,将显示/隐藏工具栏等。
如果有人直接点击工具栏,则类似于单击复选框时的反应。
因此,我想要做的是,每当单击复选框或工具栏按钮时,我都想“宣布”此事件已发生。
然后,根据事件源,我可以以相似或不同的方式进行反应。
如何最好地设计这样的内容?
我认为你需要了解使用观察者模式。基本上,感兴趣的人会订阅或监听发布者上的事件,当事件发生时,源头会通知所有的听众。
我想到了两件事情:
1. 事件委托(你不想绑定到网格上的每个输入)
看看这个链接,以了解一个很好的方法来做到这一点,同时保持代码整洁:
by ben nadel
2. 使用自定义事件,甚至更好的是 - 使用此pub/sub插件
我的应用程序中有一个类似于这样的大型网格,随着时间的推移不断发展,手动绑定到每个输入并以不同的方式响应会导致代码变得“有点”丑陋, 很棒,现在你知道你要去哪里并提前准备。
我喜欢它与jquery一起工作的方式,因为你可以将事件绑定到多个元素上。
$("input[type=checkbox]").click(function(e){
alert(e.currentTarget.id);
});
这段代码将使所有复选框警报其名称。当然,通过使用CSS类,您可以绑定所有复选框的子集以创建操作。
$("input[type=checkbox].cssClass").click(function(e){
someOtherFunction(e.currentTarget);
});