shenwj0608 2017-07-12 03:39 采纳率: 0%
浏览 1787
已采纳

js中用find找到的元素为什么不用$符号也可以直接调用方法?

js中我用find找到子元素,比如var input = $(“.btn”).find()。。,那我用这个input去调其他的方法,例如bind方法,为什么input.bind()和$(input).bind()都可以正常使用?!

  • 写回答

7条回答 默认 最新

  • white_g 2017-07-12 05:18
    关注

    首先要分清楚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对象
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)