jQuery如何区分数据'和'选择器'参数?

时间:2016-06-20 10:52:28

标签: javascript jquery

在jQuery函数中:
.on(event, [selector,] [data,] handler)

jQuery如何解析此调用:
on('click', 'tag3', () => {})
tag3选择还是数据

2 个答案:

答案 0 :(得分:1)

最后一个参数必须是处理程序。因此,如果有两个参数,那么就没有data而没有selector

如果有四个参数,则第二个参数必须为selector,第三个参数必须为data

如果只有三个参数,那就变得棘手了。

如果第二个参数不是字符串,那么它不能是选择器,因此它必须是数据。

如果是字符串,那么它可以是选择器或数据。现在jQuery可以通过选择器引擎运行它并看看它是否是一个有效的选择器来做一些启发式算法......但事实并非如此。它只是假设如果第二个参数是一个字符串,那么它就是一个选择器。

答案 1 :(得分:0)

  

jQuery如何区分'数据'和'选择器'参数吗

他们有不同的数据类型

数据 - 是一个普通对象(不是DOM或jquery对象)

selector - 是字符串或jquery / DOM / DOM数组对象。

所以,jquery可以通过判断参数的属性来判断参数是选择器还是数据,例如thisthis

return obj instanceof HTMLElement; //to check if it is a DOM object

return obj instanceof jQuery; //to check if it is a jquery object
  

tag3是选择器还是数据?

根据documentation

  

如果一个字符串作为参数传递给$(),jQuery会检查   字符串,看它是否看起来像HTML(即,它开始)。   如果不是,则将字符串解释为选择器表达式,如   如上所述。但如果字符串看起来像是一个HTML代码段,   jQuery尝试按HTML描述创建新的DOM元素。   然后创建并返回引用这些的jQuery对象   元件。

如果传递给jquery方法的字符串是HTML,则后续对象是document(DOM对象)或属性对象。