jQuery自带的一些常用方法总结(2)
这个例子的另一种等价的写法是:
$("#button").on( "click", $.proxy(o, test))
上面代码的$.proxy(o, test)的意思是,将o的方法test与o绑定。
这个例子表明,proxy方法的写法主要有两种。
jQuery.proxy(function, context)
// or
jQuery.proxy(context, name)
第一种写法是为函数(function)指定上下文对象(context),第二种写法是指定上下文对象(context)和它的某个方法名(name)。
再看一个例子。正常情况下,下面代码中的this对象指向发生click事件的DOM对象。
$('#myElement').click(function() {
$(this).addClass('aNewClass');
});
如果我们想让回调函数延迟运行,使用setTimeout方法,代码就会出错,因为setTimeout使得回调函数在全局环境运行,this将指向全局对象。
$('#myElement').click(function() {
setTimeout(function() {
$(this).addClass('aNewClass');
}, 1000);
});
上面代码中的this,将指向全局对象window,导致出错。
这时,就可以用proxy方法,将this对象绑定到myElement对象。
$('#myElement').click(function() {
setTimeout($.proxy(function() {
$(this).addClass('aNewClass');
}, this), 1000);
});
(7)$.data,$.removeData
$.data方法可以用来在DOM节点上储存数据。
// 存入数据
$.data(document.body, "foo", 52 );
// 读取数据
$.data(document.body, "foo");
// 读取所有数据
$.data(document.body);
上面代码在网页元素body上储存了一个键值对,键名为“foo”,键值为52。
$.removeData方法用于移除$.data方法所储存的数据。
$.data(div, "test1", "VALUE-1");
$.removeData(div, "test1");
(8)$.parseHTML,$.parseJSON,$.parseXML
$.parseHTML方法用于将字符串解析为DOM对象。
$.parseJSON方法用于将JSON字符串解析为JavaScript对象,作用与原生的JSON.parse()类似。但是,jQuery没有提供类似JSON.stringify()的方法,即不提供将JavaScript对象转为JSON对象的方法。
$.parseXML方法用于将字符串解析为XML对象。
var html = $.parseHTML("hello, <b>my name is</b> jQuery.");
var obj = $.parseJSON('{"name": "John"}');
var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>";
var xmlDoc = $.parseXML(xml);
(9)$.makeArray