您的位置:首页 > Web前端 > Node.js

javascript(Nodejs)中的一些实用小技巧

2013-12-05 10:19 567 查看

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 也是。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: