我正在使用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選項元素來創建元素。我喜歡班級的想法,這很好,很簡單 - 我想如果我想,我也可以只添加一個班級到新的元素 - 他們都以同樣的方式工作。 –