//检测window中新增的对象//firstvar oldMap = {};for(var i in window){ oldMap[i] = 1;}//secondfor(var i in window){ if(oldMap[i]) continue; alert(i);}$()选择器获取到的既不是一个dom元素,也不是节点列表,而是一个新的对象$() 不传入任何参数会返回一个空的jquery对象$("") 根据传入的html创建jquery对象, 原理:创建一个//google cdn获取jquery //这种写法更好$ = [1,2];jQuery(function($){ //自动传入jquery对象,即使外边的$被覆盖依然可以使用$ alert($);})//创建一个元素,同时给他添加一些属性和方法$(" ", { type: "text", val: "Test", focusin: function() { $(this).addClass("active"); }, focusout: function() { $(this).removeClass("active"); }}).appendTo("form");//获取select标签的值,当为单选时为一个数值,当为多选时则会返回一个数组,//设置多选传入数组 $("select").val([1,2,3]);$("select option:selected").each(function(){ alert(this.value);})//绑定事件时传入参数,很好的解决了闭包产生的问题var message = 'Spoon!';$('#foo').bind('click', {msg:message}, function(evt) { //访问出入参数的方式 alert(evt.data.msg); });message = 'sjk';在事件处理函数内返回false就等价于执行事件对象上的.preventDefault()[ie:evt.returnValue=false;]和.stopPropagation()[ie:evt.cancelBubble=true;]jq绑定的事件只能用自身的方法来触发,但js绑定的事件同样可以用jq来触发$("#song").click(function(evt){ alert(evt.originalEvent); //原始的时间对象 alert('click'); })//事件绑定外边的一个函数function test(evt, msg){ alert(evt); alert(msg); alert(this.innerHTML);}document.getElementById('song').onclick = function(evt){ test.call(this, evt, 'ok'); //important};// trigger传入参数$("#song").click( function (event, a, b) { // 一个普通的点击事件时,a和b是undefined类型 // 如果用下面的语句触发,那么a指向"foo",而b指向"bar" alert(a+'\n'+b);} ).trigger("click", ["foo", "bar"]);live事件委托的元理$(document).bind("click", function (e) { $(e.target).closest("li").toggleClass("hilight");});//新发现mouse事件 mouseenter / mouseleavejquery返回的对象非常类似数组,但并不是继承自数组 instanceof Array//会自动把数组的下标赋值到this下面[].push.apply(this,ary);//jquery对象实现原理function list(ary){ this.ary = ary; [].push.apply(this,ary);}list.prototype = { attr:function(){ for(var i=0;i