关闭

[置顶] javascript(Nodejs)中的一些实用小技巧

1664人阅读 评论(0) 收藏 举报
分类:

1.  不能浏览器下的阻止跳转,阻止继续执行

<script>
   <span style="font-family:ms shell dlg;"><span style="font-size: 14px; line-height: 28px;">return false; </span></span>//chrome 浏览器可以,但是Firefox不行,会在页面上打印false
   
   e=window.event;
   e.stopPropagation(); //Firefox,chrome都可以
   e.cancelBubble=true; //IE 下也可以

 </script>

所以理论上要停止代码继续执行。可以用

event.preventDefault(); [2014-12-05] 貌似只有这一个是可以的!其他的都不能阻止。擦。估计是jquery的版本不同引起的。那就用这个吧!

来做到各个浏览器都兼容。


2. 获取textarea框中换行的数据,并转换成数组,支持各种空格和换行


如图所示:


var order_list = $("#job_input_order").val(); //获取这个元素的值
order_list = order_list.replace(/^[\r\n\s]+|[\r\n\s]+$/g,''); //用replace 正则去空
var order_data = order_list.split(/[\r\n\s]+/); //用split 正则分割成数组

3.  jquery动态绑定

从jQuery 0.9几开始,忘记了。取消动态绑定live() 方法,用on() 事件方法取消。但是发现on() 也不行,动态加载的东西就是不能绑定,发现是必须要这样:

$(document).on("click", '.user-delete', function(){
     confirm('确认删除这个用户嘛?') && ajax_delete($(this).attr('data-id'));
});

要用 $(document)绑定dom 的方法。第二次参数填入 绑定的标记,我用的是class 标记的。


 4. 元素绑定事件获取元素里面的值


也是用jQuery来做。

比如:

<button data-id="5488413f9bb81678b2ef50ef" class="btn btn-danger user-delete">Delete user</button>

我需要在给这个元素绑定 click 事件,并获取data-id 的值:

$("button.user-delete").bind("click",function(){
    var id = $(this).attr('data-id');
});

用$(this) 来获取自身对象,用attr 获取data-id 的这个属性值。就可以了。

5. 页面滚动自动ajax加载


实现方法有很多,这里一种是网上一个比较简单的,也蛮实用的,但是注意的坑是 这个range 值设为50以下,不能设为100+。不然会自动加载2次,原因不知道,反正取50就好了,也懒得去查为毛了:

loadmore = true;
$(window).scroll(function(){  
    var range = 50;   
    var srollPos = $(window).scrollTop();
    var totalheight = parseFloat($(window).height()) + parseFloat(srollPos);
    if(($(document).height()-range) <= totalheight && loadmore) {
        //ajax方法
    }
}); 

loadmore 来用标识可能滚几次没数据了,就标记为false,这样就不用请求ajax了。range 要取值50。


6. nodejs中使用mongo的like正则查询


 where['name'] = new RegExp(name);

用RegExp来新建正则。就可以模糊查询了。


7. nodejs 中使用mongo的ObjectID查询

我用的是mongoskin第三方库来查询mogo数据。但是,发现一个坑,就是无法使用_id 直接查询,因为mongo里的_id 是ObjectID,所以必须转换,但是mongoskin又没提供这个方法,所以,悲剧,只能npm install mongodb 库,再使用这个ObjectID:

"mongodb": "~1.4.4",


先npm install mpngodb,虽然mongoskin里也加载了,没办法。


再引入mongodb

var ObjectID = require('mongodb').ObjectID;

再使用:

 where['_id'] = new ObjectID(_id);

这样就可以用mongoskin去查询了。

curd.find(where,field,sort,skip,limit,function(data){

}

8. nodejs 使用express 框架如何使用session

首先是必须自己另外去加载一个类库   "express-session": "~1.10.1"  先npm install 。

再在根目录下的app.js 中引入:
var session = require('express-session');

在用app.user 使用下:
app.use(session({
    secret: 'keyboard cat',
    key: 'ssid',
    cookie: { secure: false }
}))

这样就session就生效了。

读和写:

console.log(req.session.name);
req.session.name = 'admin';

其他的方法见官网:https://github.com/expressjs/session


9. jQuery中循环$.each 数组的使用

data = ['湖北','上海','武汉','合肥'];

$.each(data, function(){
     if (this == selected_city) {
             var selected = ' selected ';
     } 
     city.append("<option value='"+this+"'"+ selected + ">"+this+"</option>");   
});

循环出来的this 就是一个个元素值:湖北  上海  武汉  合肥

要是想得到key 值,其实是隐含在data里面的,0,1,2,3,

$.each(data, function(key,value){
    if (key<=5) {
       photos += '<a href="'+this+'" target="_blank"> <img src="'+this+'" height="45px" width="35"></a>';
    }
})
这个时候得到key 就是 0 1 2 3 。value 就是 湖北  上海  武汉  合肥,当然this 也是。






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:343798次
    • 积分:5427
    • 等级:
    • 排名:第5100名
    • 原创:202篇
    • 转载:4篇
    • 译文:0篇
    • 评论:40条
    最新评论