我正在使用jQuery将新的<option>
标记添加到<select>
字段,在某些情况下,我需要删除这些选项而不知道它们的值。
是否可以删除jQuery创建的所有选项,同时保留原始选项的原样?
我能想到的唯一方法是检查它们不是我想要保留的值。希望有更简单,更快捷的方式吗?
答案 0 :(得分:6)
将元素插入DOM后,它们都是平等的;没有神奇的“动态创建”标志,你可以检查。
当然,您始终可以创建自己的方法来执行此操作。例如,您可以向动态创建的选项添加"data-dynamic"
HTML属性或dynamic
CSS类,然后根据该属性进行过滤。
答案 1 :(得分:1)
您可以向标记添加属性并对其进行过滤。例如,您可以将它们作为类appended
的一部分并以这种方式删除它们。请参阅示例this fiddle。
答案 2 :(得分:1)
如果您创建了所有动态元素,那么您可以使用HTML5 data-attribute在元素上存储一小段元数据,以使这一点变得微不足道。
e.g,
element.attr("data-dynamic", "true");
然后,您可以通过以下方式查找所有动态元素:
$('*[data-dynamic="true"]')
当然,如果您知道可能出现的元素类型,可以提高效率:
$('option[data-dynamic="true"]')
这还有很多用途,例如将数据存储在非动态创建的HTML中供以后使用。
注意:虽然它是HTML5,但它适用于大多数浏览器(IE4 +),因为它与获取任何属性相同,不同之处在于它被认为是带有HTML5文档类型的有效HTML。
答案 3 :(得分:1)
它很脏,但是这里;
$(function() {
var myselects = $('#myselectelement');
var myoptions = myselects.html();
// now we know the state of the select on ready
var resetopts = function(sel, opt)
{
sel.html(opt);
}
// call resetopts(myselects, myoptions) when you want to reset.
});
这样您就不会添加任何额外的标记。但是会有内存成本。
我有办法用DOM元素做到这一点,但上面的内容很难从触摸屏上的内存中输入。