jQuery API 架构选择:为什么为 attr(), val(), .. 返回单个值而不是数组
jQuery API architecture choices: why return single value instead of arrays for attr(), val(), ...?
我很好奇一些jQuery API架构选择背后的原因。
从文档
attr():
获取匹配元素集中第一个元素的属性值。
val():
获取匹配元素集中第一个元素的当前值。
即使我有很多对象:
$('div').val()
将仅返回第一个元素的值。
但设置的工作方式不同:
价值(值):
设置匹配元素集中每个元素的值。
attr(属性名称,值):
为匹配元素集设置一个或多个属性。
所以我的问题:
为什么决定像 val() 这样的 getter 操作应该只返回第一个值而不是值数组?(如果用户希望所有映射操作都位于一个数组中,则必须使用映射操作)
为什么不对像 .val(value) 这样的 setter 操作做同样的事情呢?
我可以看到一个用例(带有
$('div').first()
),我们希望对 val() 的调用返回值(我们知道匹配的集合中只有一个 dom 元素)而不是长度为 1 的数组。但是为什么不用"单 dom 元素查询对象"的概念来处理它(只有在调用 first() 或 eq()等方法后创建)?
警告:我不参与jquery的开发,所以这些想法可能完全脱离了实际的设计决策。
无论如何,恕我直言,您的建议似乎没有任何优势:
-
要处理从 jQuery 集合的元素收集的数据数组,用户无论如何都必须遍历此数组 - 这首先可以使用 jQuery 的
each
方法完成,该方法具有立即访问携带该属性的元素的额外好处:$("my_spiffy_selector").each( function ( idx, e ) { $(e).attr("blarf").whatever(); });
-
Otoh 如果 getters 返回类型是多态的,或者如果有不同的 getter,它会使事情复杂化(至少是 jquery 代码库)。
-
可以说,最常见的用例至少需要额外的
.first()
调用。
- php函数的ajax html$_POST值返回null
- 通过数组值返回对象
- JavaScript-获取数据属性的值返回未定义的值
- 如何匹配多个值使用正则表达式返回单个值
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- 无法从量角器测试中元素的值返回字符串
- this内部的值返回this.each(function(){})
- 如何从$_COOKIE中提取单个值[“elementValues”]
- 尝试从csv文件中检索单个值时出现问题
- 如何将闭包内的值返回到外部范围
- JavaScript.call()函数“;这个“;值返回3
- Highcharts-在单个值上显示标记图标
- 如何从MYSQL中获取单个值并将其保存到JavaScript变量中
- 使用 Javascript 从 JSON 文件向 HTML 返回单个值
- 从谷歌融合表返回单个值
- 从 Meteor 中的集合文档返回单个值
- 如何编写一个返回单个值的java脚本函数,并将返回的值分配给我们想要的任何变量
- 当测试单个值时,Validate.js返回undefined
- 如何只返回列表的单个值并将其添加到特定的html元素中
- jQuery API 架构选择:为什么为 attr(), val(), .. 返回单个值而不是数组