比分说:
var val = $(this).val()
var sp = document.createElement('span')
sp.addClass('tagSpan').text(val)
$('#tagContainer').appendChild(sp)
但凡这样写都会报错
jquery的所有方法都在jquery对象上,当然不能被dom对象调用
都不在一个作用域内 原生的js对象怎么可能直接调用jQuery的对象方法?
原生的元素对象没有jquery对象的那些方法你怎么用?包装一下就行了,比如
$(sp).addClass("someclass");
你可以这样想 jq获取dom是通过 $()方法,这是jq封装好了的。但是你通过 creatElement的方法获取的dom元素,明显跟$()获取到了的dom元素不是同一个,jq里面提供的方法是给 $()对象提供的,而原始的JavaScript获取的元素里面是没有哪些方法的,所以报错。
jquery对象和dom对象不是一个东西,当然不能混用。可以使用$(dom)将dom对象转换为jquery对象
因为对象的类型不同,所支持的方法也不同。
楼上说的对,这里补个相互转换的例子,摘自锋利的jq
var $cr=$("#cr");//jq对象
var cr=$cr.get(0);//dom对象
var cr=documnet.getElementById("cr");//dom对象
var $cr=$(cr);jq对象
sp是dom元素,addClass是jQuery对象才有的方法,你用dom元素去掉用jQuery方法当然报错。共用是可以的,但是不知道为什么共用。