我应该使用HTML属性或类来指定输入字段的状态吗?

时间:2014-01-27 16:34:31

标签: javascript jquery html

我的问题比这更复杂,但基本上当用户在页面上更改某些内容时,我想以某种方式将该字段标记为“脏”并使用确认框确保用户实际上想要离开失去变化之前的页面。

在这种情况下,我无法使用全局的“更改内容”变量,因为需要根据发生的其他事件在某些项目上添加/删除它。

主题中问题的答案应考虑多个因素:

  • 一般最佳实践 - 如果这种东西存在这样的东西
  • 查找速度 - 我在许多地方看到类名更快
  • 浏览器兼容性 - 请不要超赞HTML5 / CSS3 whizzbang功能。我需要这个解决方案才能在IE7 +,Firefox,Chrome和Safari中运行。不要太担心非IE浏览器上的版本。

基本上,我有一些看起来像这样的jQuery代码:

$(":input").on("change", function(event) {
  // set something on $(this) to hold state for this item
  // $(this).addClass("my-dirty-flag");
  // or
  // this.setAttribute("data-dirty-flag", "data-dirty-flag");
});

哪个选项“更好”,为什么?

有一件事让我甚至考虑问这个问题,AngularJS似乎使用标签上的属性来做这类事情。

1 个答案:

答案 0 :(得分:2)

我会为此目的使用类,因为您可以使用本机JS代码查找它们。寻找data- *属性是一个更重的操作,因为JavaScript必须遍历所有元素属性。你可以查看其他帖子来支持我,如下所示:

jQuery select by class VS select by attribute