我正在使用我构建为Backbone视图的各种复杂控件创建表单。可以理解,我希望可靠地将标签链接到<input>
元素,我正在使用正常的for
属性。
但是,有时我需要多次使用相同的控件。我使用数据属性来驱动表单,因此我不需要id
属性供我自己使用,并且可以使用类来标识每个控件。
因此,我正在考虑生成随机ID是否有意义,只是将<label>
和<input>
链接在一起?这似乎是个坏主意,但我不确定哪个更好?
我不能将<input>
放在<label>
内,因为它们必须彼此分开。
答案 0 :(得分:2)
自动生成ID没什么不好。如果他们不是人类 - (==开发人员)可读,你可以在那里发疯。创建一个简单的函数,它会发出独特的字符串,然后你就去了:
function generateId() {
return 'GENERATED_ID_' + (++generateId.counter);
}
generateId.counter = 0;
id = generateId();
html = '<label for="'+id+'">Foo</label> <input id="'+id+'">';
这里没有发生任何不好的事情。
(当然,如果你可以将输入嵌套在标签中,那就更好了。)
答案 1 :(得分:2)
我会使用Backbone视图的cid
属性。这已经很独特了。可能然后在基本视图中覆盖_.template
以始终包含此内容(以便每次都保存传递)。