我正在使用jQuery将新的<option>
标签附加到<select>
字段,在某些情况下,我需要删除这些选项而不知道它们的值。
是否有可能删除jQuery创建的所有选项,同时保持原始选项不变?
我能想到的唯一方法就是通过检查他们不是我想要保留的值。希望有一种更简单,更快捷的方式?是否有可能使用jQuery检查元素是否是动态创建的?
2
A
回答
6
一旦元素被插入到DOM中,它们都是相等的;没有神奇的“动态创建”标志,你可以检查。
当然,你总是可以创建自己的方法来做到这一点。例如,您可以将一个"data-dynamic"
HTML属性或一个dynamic
CSS类添加到动态创建的选项,然后基于该选项进行过滤。
1
您可以添加一个属性到标签并对其进行过滤。例如,你可以让它们成为appended
类的一部分,并以这种方式删除它们。请参阅this fiddle示例。
1
如果所有的动态元素都是由您创建的,那么您可以使用HTML5 data-attribute在元素上存储一小段元数据以使其变得无足轻重。
例如,
element.attr("data-dynamic", "true");
然后你可以找到通过所有动态元素:
$('*[data-dynamic="true"]')
当然,如果你知道什么类型的元素,这可能出现在你可以把它更加高效:
$('option[data-dynamic="true"]')
这有更多的用途,例如将数据存储在非动态创建的HTML中供Jav使用aScript稍后。
虽然它是HTML5,但它在大多数浏览器(IE4 +)中都可以使用,因为它与获取任何属性相同,不同之处在于它被认为是HTML5文档的有效HTML。
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元素,但上面是足够艰难,从触摸屏上的内存键入。
相关问题
- 1. jquery检查元素是否有元素
- 2. 检查元素是否是用户可见使用boostrap
- 3. 检查表单是否有使用jquery的输入元素
- 4. 检查一个div是否有使用jquery的img元素
- 5. 使用jquery检查元素是否具有不断的类
- 6. jquery检查是否内部元素
- 7. jQuery检查元素是否存在onClick
- 8. 检查某些元素是否是没有jQuery的“聚焦”
- 9. jQuery:如何检查一个元素是否动态添加?
- 10. Deplhi TEmbeddedWB检查元素是否可见
- 11. 检查元素是否可见div
- 12. 检查元素是否完全可见
- 13. 是否可以删除“检查元素”?
- 14. 是否有可能检查是否使用jQuery加载了背景图片?
- 15. jQuery - 检查拖动后元素是否可见
- 16. 检查是否使用jquery
- 17. 即时创建DOM元素 - 检查数据是否有害
- 18. 是否可以使用LESS检查元素是否调用mixin是特定类型的元素?
- 19. 检查div是否有html元素
- 20. 检查元素是否具有类
- 21. 检查是否有元素ISNULL [Postgresql]
- 22. 检查元素是否有孩子?
- 23. 检查元素是否有属性
- 24. 检查数组是否有空元素
- 25. 检查DOM元素是否有焦点
- 26. 检查元素是否有两个类
- 27. ZK - 检查元素是否有焦点
- 28. 是否有可能使用jquery完全删除元素?
- 29. 是否有可能在动态创建的元素上选择性地禁用jquery ui可选行为?
- 30. 是否有可能使一个元素对jquery不可见
你可以控制如何将元素添加到DOM?如果不是这样,我认为除了向原始元素添加'class'属性之外,没有什么可以做的。无论哪种情况,您都需要使用某种标记属性来区分一个组。 – Blender
禁用JavaScript? – powtac
@Blender我使用jQuery的UI滑块通过物理附加DOM选项元素来创建元素。我喜欢班级的想法,这很好,很简单 - 我想如果我想,我也可以只添加一个班级到新的元素 - 他们都以同样的方式工作。 –