接受参数可以采取的所有功能,jQuery函数。在JavaScript中,函数是对象,并且jQuery或vanilla JavaScript都是类型安全的。换句话说,只要函数接受参数,它将接受函数作为其参数之一。
Ergo,不接受任何参数的方法是唯一不接受函数的方法。
编辑:
如果你想获得的技术,那么即使不接受任何参数的方法仍然会接受一个函数作为参数。正如JavaScript不是类型安全的,它也没有实际执行关于函数签名的任何规则,即它不检查输入的参数数量是否与所定义的参数数量匹配。这就是为什么你会得到一个“空引用”错误(如果未处理)而不是“无函数[函数名称]采用参数[参数列表]”。这也是为什么你可以传递无限数量的参数给一个函数,即使它只需要一个,两个或者没有。
UPDATE:
至于我的解决方案,以你原来的问题,我想通过添加jQuery是在一个坚实的语言往往会简单地返回null时澄清传递无效参数(但传递不正确数量的参数时不会错误)。 JavaScript在许多情况下都是一样的,但是,正如我所暗示的和常识所规定的那样,不管合法性如何,将过多或太少的论据传递给方法都是无意义的。
关于您的更新和您的意见,我认为您误解了jQuery的.index()
方法的基本用法。正确使用时,此方法在元素集合上调用,并具有选择器(或要匹配的元素)作为参数,并返回满足给定选择器的元素的第一个匹配项的索引,或者匹配给定元素。
更新:
从更新的例子,我可以看到,我在想你是误会使用.index()
功能一点点正确的。该函数接受一个选择器或一个元素,但是你传递了一个不返回的函数。这里是你需要什么(使用现有的语法):
textbox.closest('tr').index(function(){ return $(this);});
或者(更简单):
textbox.closest('tr').index($(this));
要添加一些详细信息(也许,更好地回答你最初的问题) ,你也可以做这样的事情:
function getOnlyParagraphElements() {
return this.tagName === "p";
}
var collection = $("body").find("*");
var firstParaIndex = collection.index(getOnlyParagraphElements);
这只是一个例子(是的,我知道我可以只使用jQuery来获取文本的段落),但概念是相同的 - 你这是怎么做你自己的选择器。
另请注意,在您的示例中,您总是检查一个项目集合,这意味着您只能得到值0
或值-1
(如果元素与选择器/传入元素不匹配) 。如果您的目标是获取您调用该方法的元素相对于其兄弟的索引,则只需调用该方法而不提供任何参数。
出于好奇,为什么? –
无参数。这并不是说你的大部分例子都是。他们只是*可以*。 – Archer
@roXon因为那么我可以提出以下问题:我可以将函数传递给“名称”函数吗? – anmarti