我正在製作一個小腳本,其中一個主要函數的arg輸入是一個元素。爲了確保原始JS適用於這些東西,我正在做theelement.value
以獲取變量的值。不幸的是,如果thelement
是一個jquery函數,則不起作用,如$('#foo')
。我需要這種兼容性的一些其他原因是我需要訪問theelement.style
,再一次jquery不支持。我知道有這些jQuery的解決方法(.css(), .val()
等),但如果我使用這些,那麼常規js輸入(document.getElementbyId('foo')
)將無法正常工作。有什麼方法可以使用一個「屬性」並使其對所有元素的輸入(包括像原型和Dojo這樣的庫中的東西)具有通用性?jQuery變量的Javascript屬性
-2
A
回答
1
不,不可能讓所有東西都具有普遍性。
如果您想處理DOM元素,則輸入需要是DOM元素,而framworks都可以獲取DOM元素。你不能奇蹟般地製作一個可以與任何庫一起工作的腳本,這就是爲什麼通用插件通常有庫特定的擴展來添加支持。
0
就像你有一個函數,它接受一個參數,並且當你通過不同類型,這樣的說法你有問題,這聽起來對我說:
function doSomething(element) {
// do something with element
}
你提到要元素有時是一個jQuery對象,有時只是一個DOM對象,然後你也提到了其他庫(原型,Dojo)。
首先,如果您只是使用一致的類型調用您的函數,您的問題將完全消失。所有庫中最簡單的類型都是DOM元素。因此,如果您只是強制將該元素作爲DOM對象引用而不是jQuery對象或任何其他庫對象傳遞,那麼您的問題將完全消失。如果調用者正在使用其他庫,然後想要調用您的函數,則他們可以始終從該庫中獲取DOM對象並傳遞實際的DOM對象。例如,在jQuery中,您可以像這樣獲得一個DOM對象:$(「#foo」)。get(0)
如果你想使它更通用並且接受多種類型,那麼你必須編寫代碼檢測可能傳遞的每種類型,並從每種類型中獲取DOM對象,以便可以完全相同地處理它們。例如,如果你想檢測無論是DOM對象的jQuery對象,你可以這樣做是這樣的:
function doSomething(element) {
// normalize element to be just a DOM object
// if it's a jQuery object, then reach in to get the first DOM object
if (element.jquery) {
element = element.get(0);
}
// do something with element here which is a DOM object
}
如果你想檢測其它庫的對象太多,那麼你必須寫類似檢測每個其他庫的代碼並從該其他庫的對象中獲取實際的DOM對象。
相關問題
- 1. JavaScript-屬性和變量
- 2. PHP變量,並改變javascript屬性
- 3. HTML屬性中的Javascript變量
- 4. 來自變量的Javascript屬性
- 5. JQuery的 - 通過數據屬性=變量
- 6. jQuery的$變量檢查屬性等於
- 7. jquery中未定義變量的屬性
- 8. 如何將屬性ID的值存儲到變量中? Jquery Javascript
- 9. 變量屬性
- 10. 屬性變量
- 11. 使用Javascript和JQuery來改變CSS屬性:JQuery不能改變Javascript已經改變的屬性?
- 12. 添加屬性變量在JavaScript
- 13. Javascript將rel屬性分配給變量
- 14. 在CSS屬性中使用javascript變量
- 15. 訪問JavaScript對象變量屬性
- 16. 使用javaScript變量添加css屬性?
- 17. Javascript,獲取全局變量屬性
- 18. 變量作爲屬性在JavaScript
- 19. 無法讀取屬性,變量undefined-Javascript
- 20. JavaScript改變屬性下的屬性
- 21. Javascript/jQuery設置變量爲多個$ .ajax調用對象屬性
- 22. jQuery屬性選擇器變量
- 23. JQuery屬性值使用JSTL變量
- 24. 將變量添加到jQuery src屬性
- 25. 用變量替換名稱屬性 - JQUERY
- 26. jQuery - 將數據屬性插入變量
- 27. 使用jQuery變量作爲CSS屬性
- 28. 傳遞變量屬性jQuery中
- 29. jquery Javascript變量
- 30. 傳遞到JavaScript變量屬性從HTML輸入ID =「屬性」
我真的不清楚你在問什麼。也就是說,所有這些庫都應該允許您訪問它們的API包裝的原始元素。例如,如果你想通過jQuery獲得一個(原始)DOM元素,你可以使用'$(「#foo」)[0]'。 – millimoose
秒@millimoose建議。將所有非DOM元素參數轉換爲DOM元素。 – ZenMaster