js中我用find找到子元素,比如var input = $(“.btn”).find()。。,那我用这个input去调其他的方法,例如bind方法,为什么input.bind()和$(input).bind()都可以正常使用?!
首先要分清楚jquery对象和dom对象,用jquery选择器选出来的对象都是jquery对象。你用$('.btn').find();获得的依然是jquery对象,所有你的变量input就是个jquery对象。
jquery对象调用bind()是jq对象上的方法,所有你用input.bind()调用是没问题的。
那么问题来了,为什么$(input).bind()也可以正常调用了,因为如果你$()里面的参数是dom对象,会给你转为jquery对象,如果是jquery对象就不变,所有其实你用$(input)和你的input都是jquery对象。
既然都是jquery对象当然都可以调用bind();
如果不清楚,你可以打印$('.btn').find()看看是对象。在打印一下$(input)是什么对象。
顺便提一点。 jquery对象转dom对象找下标。dom对象转jquery对象,用$()包起来。即
var dom = document.getElmentById('test');
var $dom = $(dom) // dom对象转为jquery对象。如果不容易分清楚 建议对存jquery对象的变量名用$开头
var dom1 = $dom[0]; // jquery对象转为dom对象
find找到的元素就是jquery元素了
$('.btn')[0]这样获取的才是input原始元素;
input元素要转换成jquery对象才需要一层包装
也就是$(input)
所有jquery元素都可以调用jquery的方法
希望可以帮到你....
find返回的事dom对象,原生dom
var input = $(“.btn”).find();
input是jQuery对象,所以调用bind方法很正常。
$()函数可以接受多种类型的参数,如果是input这种jQuery对象,还是返回jQuery对象
就是说 input 和$(input) 都是jQuery对象。$($(input)),$($($(input)))也都是jQuery对象。
var input = $('.btn').find('input');
你的问题是input.bind();和$('input').bind();这两种为什么都可以使用?
在这里**input.bind();就等价于$('.btn').find('input').bind();**
$('input').bind();和$('.btn').find('input').bind();这两个都是jQuery对象调用bind方法,当然都可以使用。
简单的说,就是都是对jQuery对象调用bind方法,所以都可以正常使用。
jquery对象和原生dom的封装转化问题。使用jquery选择器查找到的都是jquery对象,原生dom使用$()包裹后转为jquery对象。
$()是将对象转为jquery对象,find的对象本来就是jquery对象了,所以不用再$