专栏首页吴裕超js行内式遇到的一些问题 DOM对象和jq对象转换的问题

js行内式遇到的一些问题 DOM对象和jq对象转换的问题

这两天给后台页面做页面,我的工作比较简单,只需要写结构和样式就行了,写好之后,后端大哥用ajax重写页面加载数据,顺便给标签添加选中事件,做选中后变色的处理,但是却遇到一个问题,一直选不到触发事件这个对象。简单还原代码如下

<button id='btn' onclick='check()' name='abc' value='123'>类别</button>
<script>
function check() {
    console.log($(this).name);
}
</script>

遇到的问题就是,一直取不到这个button对象,打印$(this)得到的结果是【window】,后来发现,要解决要注意3个地方:

1,、函数里要穿参即function check(obj),注意这里的形参不能写this,其他的都可以。

2、在html调用的标签里调用方法时,要穿实参,即 <button onclick='check(this)' name='abc'>类别</button>。

3、如果用jq的$方法,写法要注意,如果想用$()这样的jq对象调用js的value方法,必须在后面加个get(0),即

$('#btn').get(0).value //123;

$("#btn")得到的是jquery封装的对象,里面提供了jquery的一些方法,并不是html原生对象,通过get(0)才能取到jquery对象里面关联的html对象,从而操作html对象的属性和方法。

这里涉及到DOM对象和jq对象的转换问题

jQuery对象转成DOM对象:  两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index);  (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。  如:var $v =$("#v") ; //jQuery对象  var v=$v[0]; //DOM对象  alert(v.checked) //检测这个checkbox是否被选中  (2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象  如:var $v=$("#v"); //jQuery对象  var v=$v.get(0); //DOM对象  alert(v.checked) //检测这个checkbox是否被选中

DOM对象转成jQuery对象: 对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。$(DOM对象)  如:var v=document.getElementById("v"); //DOM对象  var $v=$(v); //jQuery对象  转换后,就可以任意使用jQuery的方法了。 

可能表述的并不完全准确,如果有错欢迎指正,因为现在写代码很少用行内式,所以这个问题还是蛮有趣的,这里指提供解决方法,原理有待我进一步学习,哪些能做形参哪些能做实参,还需要深入了解。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • js中复制方法总结

      js中有深拷贝和浅拷贝两种复制形式,下面总结一下常用方法,方便平时工作复习使用

    吴裕超
  • CSS 换行问题white-space属性 window对象和global对象

    white-space: nowrap禁止换行 1、word-wrap:break-word; 内容将在边界内换行,仅用于块对象,内联对象要用的话,必须要设定h...

    吴裕超
  • iphone 低版本渲染不出来内容的一种解决办法

    吴裕超
  • 前端基础-jQuery对象和DOM对象

    jQuery对象不能使用DOM对象的成员,DOM对象不能使用jQuery对象的成员

    cwl_java
  • jquery对象和javascript对象相互转换

    本文转载:http://jeiofw.blog.51cto.com/3319919/786506

    跟着阿笨一起玩NET
  • 2018-07-161 初识JQuery

    进入官方网站获取最新的版本 http://jquery.com/download/ ,这里需要注意 jQuery 分 2 个系列版本 1.x 与 2.x,主要...

    JavaEdge
  • c#面向对象基础

    面向过程:面向完成这件事的过程,强调的是完成这件事的动作(针对每个人量身定做的动作)。

    wfaceboss
  • 关于对象池的一些分析

    在日常的开发工作中,我们可能使用或者听说过对象池,线程池以及连接池。本文将介绍对象池的产生缘由,具体实现细节,以及需要注意的问题。

    技术小黑屋
  • 《Objective C编程》笔记

    1.为什么main()总是返回0?可以将main()的返回结果视为“粗欧文报告”,这样0就是好消息,没有错误就是成功。 2.消息:消息发送(指令)必须写在一对...

    nimomeng
  • 经典面试题-列举JSP的内置对象,同一应用中页面有哪些方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java

扫码关注云+社区

领取腾讯云代金券