识别每个动态创建的元素是不好的做法吗?

时间:2013-01-06 21:44:41

标签: html

因此,我正在创建一个网页,其中新元素由用户动态创建,并且在制作时,每个元素对象都会添加到数组中以跟踪它们。问题是,当有人关闭元素时,我希望它从数组中删除;我能想到的唯一方法是给每个元素提供一个等于数组中索引的ID。我觉得这可能会变得混乱和/或是不好的做法。还有其他选择吗?或者这样做可以吗?

3 个答案:

答案 0 :(得分:2)

这不是关于动态而不是动态。

如果元素是唯一,则应该为某个元素提供ID。如果只有一个元素类型(按“类型”我的意思是语义上的意思是类型,而不是标记名等。例如,可以有多个侧边栏或标题,但只有一个#mainNav#generalWrapper

根据定义,为动态创建的每个元素提供一个ID是错误的。由于您很可能创建非常相似的元素,在这种情况下,类名更合适。

如果您想要一种跟踪它们的方法,您可以随时将data-*=属性与您想要的任何自定义数据一起使用。例如:data-id=1

答案 1 :(得分:2)

关于过度使用ID的问题存在很大争议。

我的建议是使用data属性,例如:

<li data-id="54">My element</li>

然后您可以使用Javascript轻松操作元素(删除,修改等)。例如,jQuery具有data()方法 - http://api.jquery.com/jQuery.data/

我反对使用类或id的主要论点是你(在这个例子中)寻找有关特定函数的元素的信息,而类或id更适合在更全局的层次上区分元素

答案 2 :(得分:0)

您可以等到用户完成添加或删除元素,然后使用类似jQuery的$ .each函数。例如,如果您想从用户添加到div的一系列输入中收集值,则可以执行

var myArray = [];
$('#mydiv input').each(function(){
    //Do something here with each of the inputs
    myArray.push($(this).val());
});

如果您只想为它们添加某种属性,您仍然可以使用相同的功能

$('#mydiv input').each(function(index){
    //Do something here with each of the inputs
    $(this).attr('data-id', index);
});

我希望我已经为你回答了你的问题,因为我不确定你想要使用那个数组。我想在某些时候提出某种意见。