1.实现点击页面内任何元素,alert该元素的元素名
2.给出js异步加载的方案,以及说明原理
3.扩展string方法,使得所有字符串拥有trim方法
4.如何拓展开发JQ插件
1 /** 2 * 第一题 3 * 一开始的想法是想获取页面所有元素,依次绑定方法,突然又想到那直接绑定在doucument上,利用事件冒泡触发 4 */ 5 //考虑兼容问题 6 function bindEvent(el, event, fn) { 7 if (el.addEventListener) { 8 el.addEventListener(event, fn); 9 } elseif (el.attachEvent) { 10 el.attachEvent('on' + event, fn); 11 } else { 12 el['on' + event] = fn; 13 } 14 } 15 16 bindEvent(document, 'click', function (e) { 17 alert(e.target.nodeName); 18 }); 19 20 21 22 /** 23 * 2.异步加载方案 24 * 常用的有ajax以及iframe,其中iframe使用已经越来越少 25 */ 26 //iframe通过改变src值可以实现异步加载 27 //ajax通过核心对象XMLHttpRequest可以实现异步加载 28 29 30 /** 31 * 3.通过String的Prototype可以扩展string的方法 32 */ 33 String.prototype.trim = function () { 34 return this.replace(/(^s*)|(s*$)/g, ''); 35 }; 36 37 /** 38 * 4.如何扩展jq插件 39 */ 40 //通过jq的extend方法或直接扩展fn属性 41 //写法1: 42 $.fn.extend({ 43 plugin: function () { 44 //通过jq获取到的元素可能有多个,所以使用each可以保证所有元素都实现 45 this.each(function () { 46 //do something 47 }); 48 49 //返回this保证jq的链式调用 50 return this; 51 } 52 }); 53 54 //跟写法1相同 55 $.fn.plugin = function () { 56 this.each(function () { 57 //do something 58 }); 59 60 return this; 61 }; 62 63 //使用方法: 64 $("body").plugin(); 65 66 //写法2 67 jQuery.extend({ 68 alert: function () { 69 console.log(this); 70 } 71 }); 72 73 //写法2例子, 字符串去除头尾空格 74 jQuery.extend({ 75 trim: function (str) { 76 return str.replace(/(^s*)|(s*$)/g, ''); 77 } 78 }); 79 80 81 var str = " i am facial "; 82 str = $.trim(str); //"i am facial"