我正在使用 jQuery 将新<option>
标签附加到<select>
字段,在某些情况下,我需要在不知道它们的值的情况下删除这些选项。
是否可以删除 jQuery 创建的所有选项,同时保持原始选项不变?
我能想到的唯一方法是检查它们不是我想要保留的值。希望有更简单,更快的方法吗?
问问题
102 次
4 回答
6
一旦元素被插入到 DOM 中,它们都是相等的;没有可以检查的神奇“动态创建”标志。
当然,您始终可以创建自己的方法来执行此操作。例如,您可以将"data-dynamic"
HTML 属性或dynamic
CSS 类添加到动态创建的选项中,然后根据它们进行过滤。
于 2012-10-05T08:41:01.033 回答
1
您可以将属性添加到标签并对其进行过滤。例如,您可以使它们成为类的一部分appended
并以这种方式删除它们。参见这个 fiddle的例子。
于 2012-10-05T08:46:36.350 回答
1
如果您已经创建了所有动态元素,那么您可以使用HTML5 数据属性在元素上存储一小段元数据,以使这变得微不足道。
例如,
element.attr("data-dynamic", "true");
然后,您可以通过以下方式找到所有动态元素:
$('*[data-dynamic="true"]')
当然,如果您知道这可能会出现在哪种类型的元素上,您可以使其更高效:
$('option[data-dynamic="true"]')
这还有更多用途,例如将数据存储在非动态创建的 HTML 中以供 JavaScript 以后使用。
注意:虽然它是 HTML5,但它在大多数浏览器 (IE4+) 中都有效,因为它与获取任何属性相同,但不同之处在于它被认为是具有 HTML5 文档类型的有效 HTML。
于 2012-10-05T08:47:10.333 回答
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 元素做到这一点,但上面的内容很难在触摸屏上从内存中输入。
于 2012-10-05T14:15:59.023 回答