我想了解onchange
的{{1}}事件。特别是,我试图理解函数语法和参数。
bootstrap-multiselect
如何知道函数中的三个参数是什么意思?我在哪里可以得到这三个参数?我也尝试查看代码https://github.com/davidstutz/bootstrap-multiselect/blob/master/dist/js/bootstrap-multiselect.js#L263,但对它没有多大意义。
我知道使用警告,在此功能选项中引用所选选项,$('#example-onChange').multiselect({
onChange: function(option, checked, select) {
alert('Changed option ' + $(option).val() + '.');
}
});
显示该选项是checked
还是checked
。在函数内部执行unchecked
时,我不断获得undefined
,因此不确定这是什么意思。
问题 :如何理解这些函数参数和语法?这只是一个例子,但知道一般程序将帮助我将来解码其他类似的功能。
答案 0 :(得分:3)
简而言之,图书馆似乎并没有提供select
选项。
一般情况下,在文档不是非常精确的情况下,我经常应用的技术是console.log
arguments
,然后检查每个文档的外观。
在这种情况下,做:
$('#example-onChange').multiselect({
onChange: function(option, checked, select) {
console.log(arguments);
}
});
...我得到了以下输出:
...从这里你可以看到提供了两个参数。第一个是被单击的选项的jQuery对象。第二个(你可以假设)是一个关于选择是否被选中的布尔值。
您还可以看到没有提供select
(第三个参数)。
您可以采取的另一种方法是搜索源代码,就像您一样;但是我建议找到函数的名称,而不是定义它的位置。通过在the source code中搜索onChange
,您可以看到onChange
被调用至少3次。
this.options.onChange($option, checked);
this.options.onChange($option, true);
this.options.onChange($option, false);
......其中没有一个提供第三个参数。我在这里说至少3次,因为有时(特别是在大型图书馆中)找到所有的调用网站很困难,因为开发人员可以用各种奇怪和奇妙的方式掩盖它们
您可以使用的其他技巧:
在处理函数中设置断点(使用"断点"开发工具的功能,或通过debugger
语句),触发处理程序,然后执行callstack(再次,使用开发人员工具)检查调用站点,并查看提供的变量。
在相应的GitHub项目上打开一个问题。您会发现很多图书馆老板都非常乐意为您提供帮助。
答案 1 :(得分:1)
不幸的是,所有Javascript库都必须具有非常强大的文档。
此外,Javascript是一种动态类型语言,因此没有关于形式参数所需类型的信息。如果没有良好的文档,它会使库更难理解。
为了快速理解,有经验,有一些可以使用的思考机制。例如,事件委托的参数提供了发生它的元素的信息。 就像这些参数是返回给您的值。
在您的示例中,有可能选项,checked和select与#example-onChange中定义的多选项中的选项元素有关,该选项已更改(onChange)。
示例1:
onClose:function(success)
{
//TODO
}
在这种情况下,“success”应该表示:如果关闭我的元素成功,则此参数为true,否则“success”为false。
示例2:
afterSave:function(success,filename) {
}
在这种情况下,执行save的操作后,“filename”应该是已保存元素的文件名。
我尽力写出正确的英语,我希望这是可以理解的。