2016年10月20日 星期四

公用:each、isXXX、parseXXX (jQuery28)

※$.each 

就是迴圈

$(function(){
    $.each(['a', 'b', 'c'], function(i, v){
        console.log('i=' + i);
        console.log('v=' + v);
    });
    //0 a-->1 b-->2 c
    
    $.each({'a':'one', 'b':'two', 'c':'three'}, function(i, v){
        console.log('i=' + i);
        console.log('v=' + v);
    });
    //a one-->b two-->c three
    
    $.each({'a':{a1:1}, 'b':'two', 'c':{c3:3}}, function(i, v){
        console.log('i=' + i);
        if($.isPlainObject(v)){
            for(vc in v){
                console.log('vc=' + vc);
                console.log('v[vc]=' + v[vc]);
            }
        } else {
            console.log('v=' + v);
        }
    });
    // a a1 1-->b two-->c c3 3
});

※如果只有value,那第一個參數就是index



※$.isXXX 

isXXX都是判斷用的方法,目前有以下七種

1.$.isArray():是否是陣列
2.$.isEmptyObject():是否是空物件
3.$.isFunction():是否是function
4.$.isNumeric():是否是數字
5.$.isPlainObject():是否是物件
6.$.isWindow():是否是window物件
7.$.isXMLDoc():是否是XML文件



※isPlainObject、isArray、isEmptyObject

console.log($.isPlainObject({a:1, b:2})); // true
console.log($.isPlainObject([1,2,3])); // false
console.log($.isPlainObject({})); // true
console.log($.isPlainObject([])); // false
console.log($.isPlainObject({a:[4,5,6], b:[7,8,9]})); // true
console.log($.isPlainObject([{c:3}, {d:4}])); // false
console.log($.isPlainObject(function(){})); // false
    
console.log($.isArray({a:1, b:2})); // false
console.log($.isArray([1,2,3])); // true
console.log($.isArray({})); // false
console.log($.isArray([])); // true
console.log($.isArray({a:[4,5,6], b:[7,8,9]})); // false
console.log($.isArray([{c:3}, {d:4}])); // true
console.log($.isArray(function(){})); // false
    
console.log($.isEmptyObject('')); // true
console.log($.isEmptyObject("")); // true
console.log($.isEmptyObject({})); // true
console.log($.isEmptyObject([])); // true
console.log($.isEmptyObject(function(p){})); // true
console.log($.isEmptyObject(function(){var a = 5; return a + 5})); // true

※{}就是物件;[]就是陣列

※要注意判斷空物件時的function,裡面明明有東西,但還是true



※isFunction

function aFunction(){}
var bFunction = function(){}
var cFunction = new Function();
// var dFunction = (x) => {}
    
console.log($.isFunction(aFunction)); // true
console.log($.isFunction(bFunction)); // true
console.log($.isFunction(cFunction)); // true
// console.log($.isFunction(dFunction)); // true
console.log($.isFunction(function(){})); // true

※注解的部分是IE不支援



※isNumeric、isWindow

console.log($.isNumeric(+10)); // true
console.log($.isNumeric("-10")); // true
console.log($.isNumeric(0144)); // true 
console.log($.isNumeric(0xFF)); // true
console.log($.isNumeric("0xFF")); // true
console.log($.isNumeric("8e5")); // true
console.log($.isNumeric(3.1415)); // true
    
console.log($.isWindow(window)); // true
console.log($.isWindow(document)); // false

※注意判斷數字時,其他進位也有支援



※isXMLDoc、parseXML

console.log($.isXMLDoc('<xxx></xxx>')); // false
console.log($.isXMLDoc($.parseXML('<xxx></xxx>'))); // true
console.log($.isXMLDoc($.parseXML('<xxx />'))); // true

※經過parseXML後,才是XML,就算字串裡有加xml第一行的version1.0之類的結果也是一樣,反正裡面就是字串



※parseXXX

目前有三種
1. parseXML:轉成XML,上個範例已有,以下就不寫了
2.parseJSON:轉成JSON
3.parseHTML:轉成HTML


※parseJSON

// alert($.parseJSON('{a:1}').a); // 執行時錯誤
// alert($.parseJSON("{'a':1}").a); // 執行時錯誤
alert($.parseJSON('{"a":1}').a); // 1
// alert($.parseJSON('["a":1]').a); // 執行時錯誤
// alert($.parseJSON('{"a":"1\t2"}').a); // 執行時錯誤
alert($.parseJSON(null)); //null
alert($.parseJSON(undefined)); // 1.9之前null,之後執行時錯誤

※只有雙引號才可以,其他就只有null不會報錯


※parseHTML

<div id="log" />
----------
var html = $.parseHTML("hello, <b>my name is</b> jQuery.");
$("#log").append(html);
    
$.each(html, function(i, v) {
    console.log(i); // 0-->1-->2
    console.log(v); // hello,--><b>my name is</b>-->jQuery.
    console.log('-----');
});

※append時,轉不轉成HTML都可以,但如果不轉成HTML,用each會執行錯誤

※還有第二、三個參數可用,我沒研究

沒有留言:

張貼留言