jQuery踩坑

最近工作中很多地方都使用到了Jquery,把一些踩过的坑写下来

1、jQuery全局变量的声明
    全局变量的好处在于减少变量的个数,并可以在不同的函数中直接使用,在某些传值的时候很好用,但他的坏处在于占用内存较多,增加耦合性
    全局变量有如下几种声明方式:
    一、var + 变量名的方式在function外部声明,如果在函数内部用此方法声明的即为局部变量
<script>
   var test = 5; //全局变量
   function a(){
     var a = 3; //局部变量
     alert(a);
   }
   function b(){
     alert(test);
   }
   //a();//调用a方法,那么方法里面的内容才会执行
   //b();//同上
</script>
  二、不用var,直接声明变量时,这个变量会被默认为全局变量,即使你是在函数内部声明此变量
<script>
     test = 5; //全局变量
     function a(){
       aa = 3; //也是全局变量
       alert(test);
     }
     //a();  //输出5
     //alert(aa);//这里也可以方法a()方法里面的变量,因为aa是全局变量
   </script>
三、使用window全局对象声明
<script>
   window.test = 50;
   alert(test); //输出50
</script>


2、jQuery字符串转化为数组、数组的遍历以及判断某个值是否在数组内
    在利用ztree实现某个功能时,需要根据数据库取出的值来判断该值是否已经被勾选过。
    数据是通过字符串类型存入数据库的,样式是这样的:“4063,4186,.......”
var push_merchants = "<?=$push_merchants;?>" . split ( ',' ) ;  //通过split()方法将字符串转化为数组,但注意这是数组里面的数据类型并不是数字而是字符串,如下图

由于一开始并没有注意这个问题,所以在后面判断值是否在数组中时出现了很大的问题。
function filter(treeId, parentNode, childNodes){
    if (!childNodes) return null;
    var zTree = $.fn.zTree.getZTreeObj("ztree");
    for (var i=0, l=childNodes.length; i<l; i++){
        childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
        //console.log($.inArray(childNodes[i].id,checkedNode));
        //如果数组中存在childNodes[i],则将状态变为选定
         if($.inArray(childNodes[i].id,checkedNode) > 0){         //通过$.inArray()来判断数组中是否存在某个值,存在返回索引值,不存在返回-1
            zTree.checkNode(childNodes[i], true, true);
        }
    }
    return childNodes;
}
刚开始这段判断结果一直返回-1,后来经过检查发现:要判断的值为整型,而数组里的值全部为字符串,所造成了判断结果全部为错误,所以以后进行判断时一定要注意值的类型。
var checkedNode = new Array() ;

for ( var i= 0 , l=push_merchants. length ; i<l ; i++){
     checkedNode[i] = parseInt (push_merchants[i]) ;
}
通过遍历数组,我将数组内的值全部转化为了整型.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值