gpt4 book ai didi

javascript - 为什么 DOM 包装器方法不一致地使用第一个元素和整个元素列表?

转载 作者:行者123 更新时间:2023-11-30 18:15:45 25 4
gpt4 key购买 nike

我见过的库有 DOM 包装器,在某些情况下仅包含处理列表的第一个元素,例如:

return this[0].innerHTML

并在其他一些地方使用整个列表:

for( var i=0, l=this.length; ++i<l; ) this[i].className = cls;
return this

为什么这种方法被接受?

我认为挑出第一个元素违背了在列表的其余部分应用相同内容的方法的目的。有可疑的功能不是很糟糕吗?我知道它适合很多人..但感觉不一致,我很想知道为什么它被如此广泛地接受。

以编辑为例:

jQuery.html()

If the selector expression matches more than one element, only the first match will have its HTML content returned.

为什么不是全部?

hide() bonzo 中的方法,来自 Dustin Diaz

//...
hide: function () {
return this.each(function (el) {
el.style.display = 'none'
})
}

为什么不是第一个?

最佳答案

jQuery 中的访问器方法返回单个值,因为它更简单且更有用。如果 .html() API 为所有元素返回值 if innerHTML,这意味着它必须返回一个数组。反过来,这意味着在需要单个元素内容的最常见情况下,您必须添加数组访问。还有一个问题是要确切知道哪个返回值与哪个选定元素相关。换句话说,如果 .html() 返回一个元素内容数组:

var contentList = $('.someClass, span, .hidden .container').html();

如果“contentList”只是一个简单的数组,它有什么用呢?代码如何知道每个元素来自哪个 DOM 节点?当然有解决方案,但为了支持罕见的一般情况,简单的情况再次变得复杂。

当然可以使用 .map() 自己获取列表。我认为这只是一个智能、实用、务实的 API 设计问题。

关于javascript - 为什么 DOM 包装器方法不一致地使用第一个元素和整个元素列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13294834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com