我正在制作一个小脚本,其中一个主要函数的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. HTML属性中的Javascript变量
- 2. 来自变量的Javascript属性
- 3. jquery中未定义变量的属性
- 4. JQuery的 - 通过数据属性=变量
- 5. jQuery的$变量检查属性等于
- 6. 如何将属性ID的值存储到变量中? Jquery Javascript
- 7. 属性变量
- 8. 变量属性
- 9. 使用Javascript和JQuery来改变CSS属性:JQuery不能改变Javascript已经改变的属性?
- 10. Javascript将rel属性分配给变量
- 11. 在CSS属性中使用javascript变量
- 12. 使用javaScript变量添加css属性?
- 13. 无法读取属性,变量undefined-Javascript
- 14. 访问JavaScript对象变量属性
- 15. Javascript,获取全局变量属性
- 16. 变量作为属性在JavaScript
- 17. 添加属性变量在JavaScript
- 18. JavaScript改变属性下的属性
- 19. Javascript/jQuery设置变量为多个$ .ajax调用对象属性
- 20. 将变量添加到jQuery src属性
- 21. jQuery属性选择器变量
- 22. 使用jQuery变量作为CSS属性
- 23. 传递变量属性jQuery中
- 24. 用变量替换名称属性 - JQUERY
- 25. JQuery属性值使用JSTL变量
- 26. jquery Javascript变量
- 27. 传递到JavaScript变量属性从HTML输入ID =“属性”
- 28. Wildfly变量属性
- 29. 属性vs变量
- 30. 在Javascript中为变量添加变量“属性”
我真的不清楚你在问什么。也就是说,所有这些库都应该允许您访问它们的API包装的原始元素。例如,如果你想通过jQuery获得一个(原始)DOM元素,你可以使用'$(“#foo”)[0]'。 – millimoose
秒@millimoose建议。将所有非DOM元素参数转换为DOM元素。 – ZenMaster