如果元素是唯一的,那么使用javascript更改ID是一种好的做法吗?
我有一个无序列表,其中我使用一个ID来标识上次单击的当前列表项。单击其他项目时,我使用js将id切换到列表中的其他项目,以便应用样式如果元素是唯一的,那么使用javascript更改ID是一种好的做法吗?,javascript,html,css,Javascript,Html,Css,我有一个无序列表,其中我使用一个ID来标识上次单击的当前列表项。单击其他项目时,我使用js将id切换到列表中的其他项目,以便应用样式 在我看来,一个唯一的、只能使用一次的项目(一个选定的li项目)应该被标识为ID,这是我这么做的原因,但有人告诉我这样做是不好的做法 由于您可能需要在将来的某个时间点引用元素的特定id,因此更改它可能不是一个好主意。在您的情况下,最好只对最后单击的项目应用一个类。我不会这样做。这似乎是您发现的一个机会,您可以将其用于CSS样式(使用属性选择器)和JS使用(使用dat
在我看来,一个唯一的、只能使用一次的项目(一个选定的li项目)应该被标识为ID,这是我这么做的原因,但有人告诉我这样做是不好的做法 由于您可能需要在将来的某个时间点引用元素的特定id,因此更改它可能不是一个好主意。在您的情况下,最好只对最后单击的项目应用一个类。我不会这样做。这似乎是您发现的一个机会,您可以将其用于CSS样式(使用属性选择器)和JS使用(使用
dataset
或jQuery的.data()
方法)。
:
HTML5的设计考虑到了数据的可扩展性
与特定元素关联,但不需要定义任何
意思data-*属性允许我们在上存储额外信息
标准的语义HTML元素,没有其他缺陷,例如
类列表、非标准属性、DOM上的额外属性或
setUserData
在HTML端:
<!-- You can use data without value, and just test its presence -->
<li data-selected>
...
</li>
你的问题实际上有几个有趣的部分,让我尽量回答它们:-)
<ul>
<li>Some item</li>
<li class="is-active">Some item</li>
<li>Some item</li>
<li>Some item</li>
</ul>
jQuery
// You probably want a bit more specific selector, but it's just an example.
$('li').on('click', function() {
var $element = $(this),
$elements = $('li');
if (!$element.hasClass('is-active')) {
$elements.removeClass('is-active');
$element.addClass('is-active');
}
});
您是否也从以前选择的元素中删除id?我是否更喜欢使用类名称,如
单击的。。。如果你以后想在另一个列表或项目上应用该功能,ID可能是个问题。对我来说,问题似乎是:我应该使用ID进行样式设置吗?答案是:应用一个类。如果一个ID可以在不同的时间引用不同的元素,那么它就不会引用唯一的元素,也不是真正的ID。同样,你可以使用我的驾驶执照,但你会很淘气。是的,我删除了ID。。。然后将其添加到另一个项目中。这也是一个有效的方法,例如,如果您正在构建一个应用程序,它可能会非常有用。$elements.toggleClass('is-active',false.)。filter($element)。toggleClass('is-active',true)如果我不反对“在……中并没有真正的伤害”这一部分,我会投这个票。请随意解释
.is-active {
color: #eee;
background-color: #222;
}
// You probably want a bit more specific selector, but it's just an example.
$('li').on('click', function() {
var $element = $(this),
$elements = $('li');
if (!$element.hasClass('is-active')) {
$elements.removeClass('is-active');
$element.addClass('is-active');
}
});