jq日历插件引起的思考$("ele") 和 $($("ele"))

jq日历插件引起的思考$("ele") 和 $($("ele"))
jq日历插件引起的思考$("ele") 和 $($("ele"))
jq日历插件引起的思考$("ele") 和 $($("ele"))
jq日历插件引起的思考$("ele") 和 $($("ele"))

在JQ对象里面扩展一个CalenderPlugin

写在了$.fn.extend()的参数里面

传进去一个obj,里面有个属性:CalenderPlugin,是一个匿名函数,

分析,第一个this指向谁?

1.谁调用就指向谁 $("#date_input") 是个jq对象,也就是说,后面绑定的create,bindData都是JQ对象的属性,而不是DOM对象的属性,this----> $(“date_input”)

2.这里的this就是JQ对象,所以写成this也是OK的

jq日历插件引起的思考$("ele") 和 $($("ele"))

因为 $(“a”) $( $(“a”))都是JQ对象,但是这两个JQ对象是不等价的,不同的对象永不相等,只能进行属性值的比较,不能在 $(“a”) 上绑定属性,用 $( $(“a”))调用,因为 $( $(“a”))是一个新的对象

3.所以在这里必须用最外层的this_才能取到这个函数,如果用$(this)是取不到的,甚至用 $(this_)也不行,因为一用 $()包起来就是一个新的JQ对象了,就再也没有之前的方法与属性了

jq日历插件引起的思考$("ele") 和 $($("ele"))

4.在$(“xxx”).click(function(){ 里面this指向被点击的元素,因为click包装了一个ele.onclick = fn [我们写的回调函数]})

5. $( “ele”) 和 $( $(“ele”))只绑定事件不添加其他属性时是等价的,内部都是ele.onclick = fn