我正在使用一个使用jQuery的SPA,其中一个要求是我应该触发输入字段的特定值(复选框,下拉列表,文本)的操作。我想从性能角度了解以下哪些内容更快或更简单
$('input, select').on('click focus change', function(e){
//do something
});
或
$('form').on('click focus change', 'input, select', function(e){
//do something
});
另外,鉴于页面上会有异步操作,第二个选项是我倾向于但我想与你联系专家:)
答案 0 :(得分:1)
第二个片段将事件附加到整个表单。如果用户点击/聚焦/更改任何地方(尤其是点击),则会触发事件。一旦它触发它然后检查它是否在输入或选择上完成,如果没有它中止。因此,第二个版本的开销略高,因为它有时会触发非输入/选择事件。
第二种格式的主要好处是动态创建的元素。让我们说用户所做的事情会导致在表单上创建一个额外的字段。如果页面最初加载时页面上没有该字段,那么当更改/单击该字段时,不会触发事件的第一个版本。但是,第二个版本会开火。
我的建议:除非你像我描述的那样专门处理动态字段,否则我会使用第一个。但老实说,差异很小,要么就好了。
答案 1 :(得分:1)
就性能而言,写回家并不多。差异(如果有的话)可以忽略不计。对于异步操作,我建议您选择第二个代码段。