JS调用iframe父窗口元素和子窗口元素的方法
父窗口调用子窗口 window.frames["iframe的id"].document.getElementById("iframe中的id"?) 子窗口调用父窗口 parent.document.getElementById("父页面中的Id") 子窗口调用父窗口的方法: window.parent.closedivtree(); |
问题:$.fn与$.fn.extend的区别
$.fn给jQuery对象添加方法,例如:$.fn.abc是在$.fn命名空间下定义一个abc的方法。 $.fn.extend为扩展jQuery类本身.为类添加新的方法。 |
问题:$.each 和$(selector).each()的区别
$.each用于遍历对象和数组,是通用的遍历方法。其数字签名: jQuery.each(object,[callback])
object:需要遍历的对象或数组;
callback:回调函数。它拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。如果需要退出 each 循环可使回调函数返回 false,其它返回值将被忽略。
使用例子参考:jQuery api> 工具 > $.each(object,[callback])
$.(selector).each()的作用是以每一个匹配的元素作为上下文来执行一个函数。
意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素)。而且,在每次执行函数时,都会给函数传递一个表示作为执行环境的元素在匹配的元素集合中所处位置的数字值作为参数(从零开始的整型)。 返回 'false' 将停止循环 (就像在普通的循环中使用 'break')。返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue')。
问题:javascript判断字符串是否为空
很多情况下,都是用length来直接判断字符串是否为空,如下:
var string = ""; if(string.length == 0){ alert("不能为空"); }
但如果用户输入的是空格,制表符,换页符呢?这样的话,也是不为空的,但是这样的数据就不是我们想要的吧。
var string = ""; if(string.replace(/(^\s*)|(\s*$)/g,"").length == 0){ alert("不能为空"); }
说明:replace(/(^\s*)|(\s*$)/g, "")
^表示字符串必须以后面的规则开头, 在这里就是说字符串必须以\s*开头.
\s 是空格的意思, * 表示有0个或多个
\s* 就是有0个或多个空格
(^\s*) 表示的就是以0个空格或者多个空格开头
| 表示或的意思, 也就是满足| 左边的也成立, 满足 | 右面的也成立.
\s*前面说过了
$ 的意思是字符串必须以前面的规则结尾
(\s*$) 的意思就是, 以0个空格或者多个空格结尾
/.../g 是正则表达式的属性, 表示全文匹配, 而不是找到一个就停止
所以这个正则表达式替换的就是前导空格和后导空格
因为有前导空格, 就说明以0个或多个空格开头, 满足正则表达式中 | 前面的条件: (^\s*)
而如果有后导空格, 就说明以0个或多个空格结尾, 满足正则表达式中 | 后面的条件: (\s*$)
//打印数组 function print_array(arr) { for ( var key in arr) { if (typeof (arr[key]) == 'array' || typeof (arr[key]) == 'object') {//递归调用 print_array(arr[key]); } else { alert(key + ' = ' + arr[key]); } } }
$.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; };