jquery 小白两个简单的问题

关于删除添加类:
document.getElementById("a").classList.add("mystyle");
在我载入了jquery的情况下,下面这条代码为什么会报错呀? 不是和上面相等的嘛?
$("#a").classList.add("mystyle");

还有.bind()函数:
.bind("scroll",function(){}) .scroll(function(){})
有何不同啊(包括所有点击 移入 移出等事件)?

阅读 3.3k
8 个回答

添加class 用 addClass()
jq早都不推荐bind方法了 用on
on是事件委托 直接捆绑与on的区别就是 用on的方法性能更好 可以防止 事件冒泡 相当于js原生的 addEventListener,为动态添加的元素也能绑上指定事件

可以混着用但是一定要明白,什么对象调用什么方法。你用jquery选择器选中的是jquery对象,只能用jq的api。
document.getElementsById()选中的是dom对象

你应该看看 jq对象怎么转为原生的对象

DOM对象跟JQ对象不一样,JQ对象用DOM对象的API肯定会报错,JQ对象要用JQ对象的API,改成:$("#a").addClass("mystyle")就可以了。

1.jQurey选择器和原生dom是不一样的,需要转换成原生dom对象,get([index])返回实际的dom对象。

//$("#a").get(0)==document.getElementById("a")
$("#a").get(0).classList.add("mystyle");

2.bind()函数除了绑定原生事件还可以绑定自定义事件

//绑定自定义事件
$("#a").bind("myClick",function(){console.log("myClick")});
//触发自定义事件
$("#a").trigger("myClick");

$("#a")[0].classList.add("mystyle");

多谢多谢,我已经明白了。

好感动! 我以为问这么小白的问题会被踩的qaq 没想到有这么多热心的回答 T T

谢谢!

document.getElementById("a") 和 $("#a") 都能获取到a 节点但是不代表他们都有ClassList属性,
找不到的话你可以把这2个都打印出来看看property 之间的区别

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题