13333

jQuery 1.4十大新特性解读及代码示例(1)
2010-05-13 08:57 Ethan Ethan Woo的博客 我要评论(0) 字号:T | T

今年1月51CTO曾为您报道过jQuery 1.4发布的消息,在这个版本中,jQuery有相当多的改进与功能更新,包括将属性传递给jQurey、多事件绑定以及一些元素处理的功能,我们将通过讲解和示例代码的方式向您详细介绍。
AD:2013云计算架构师峰会精彩课程曝光
今年1月51CTO曾为您报道过jQuery 1.4发布的消息,在这个版本中,jQuery有相当多的改进与功能更新,它不仅包含了很多新的特性,还改进了很多功能, 更在性能优化方面下了很大功夫, 本文将对这些新的特性和增强的部分进行讨论,希望能对你有所帮助。

jQuery 1.4版本下载地址: http://code.jquery.com/jquery-1.4.js

下面我们通过讲解和示例代码来详细介绍jQurey 1.4版本中你应该知道并使用的十大新特性。

1. 传递属性给jQuery

在之前的版本中jQuery就通过"attr”方法支持了添加属性到元素集合中,"attr”方法不仅可以传递属性名和值,也可以传递包含有多个属性的对象集合。在jQurey 1.4中,除了可以创建新的对象,现在它更能将属性对象作为参数传递给jQuery函数或对象自身。如你可以创建一个含有多个属性的链接元素。

jQuery('<a></a>', {
id: 'gid',
href: 'http://www.google.com',
title: 'google非和谐版',
rel: 'external',
text: '进入<SPAN class=t_tag onclick=tagshow(event) href="tag.php?name=Google"
mce_href="tag.php?name=Google">Google</SPAN>!'
});
你可能会注意到"text”属性并且猜测它是干吗的,因为a标签是没有"text”属性的。呵呵,当你传递某些属性时,jquery 1.4同样会检查并使用它自己的方法。因此上面的"text”属性可以让jQuery调用它的".text()”方法并将"进入Google!“作为它的唯一参数。

这里给出一个更好的例子:

jQuery('<div/>', {
id: 'foo',
css: {
fontWeight: 700,
color: 'green'
},
click: function(){
alert('Foo被点击过!');
}
});
"id”属性是作为一个普通属性被添加的。但"css”和"click”属性则对应特定的jQuery方法。上面的代码在1.4之前一种写法如下:

jQuery('<div/>')
.attr('id', 'foo')
.css({
fontWeight: 700,
color: 'green'
})
.click(function(){
alert('Foo被点击过!');
});
2. 所有的东西都可以"until“了

jQuery 1.4新增了三个对DOM操作的方法,他们分别是"nextUntil", "prevUntil" 和 "parentsUntil"。 这些方法会按照某个顺序去遍历DOM对象直到满足指定的筛选条件。假设我们有一个水果列表:

<ul>
<li>苹果</li>
<li>香蕉</li>
<li>葡萄</li>
<li>草莓</li>
<li>例子</li>
<li>桃子</li>
</ul>
如果你想选择所有在"Apple”和"Strawberry”之间的元素。代码可以这样写:

jQuery('ul li:contains(苹果)').nextUntil(':contains(梨子)'); // 得到 香蕉,葡萄,草莓

3. 绑定多个事件

与通过jquery链绑定多个方法到一起相比,现在你可以通过一次调用来绑定所有这些事件,如:

jQuery('#foo).bind({
click: function() {
// 具体代码
},
mouseover: function() {
// 具体代码
},
mouseout: function() {
// 具体代码
}
})
你也可以通过 ".one()"方法操作。

4、检查元素是否拥有某对象

通过".has()”方法,jQuery 1.4使得检查一个元素(或者集合)是不是有某对象变得相当简单。从程序角度看,它和jQuery的selector过滤器":has()”是一样的。该方法会返回在当前集合中所有包含有至少一个符合条件的元素数组。

jQuery('div').has('ul');
上面方法会返回所有包含有UL元素的DIV元素数组。在这种情况下,你可能会更倾向于简单使用选择器的过滤器(":has()"), 但当你需要通过代码过滤一个数组的时候,该方法仍会很有用。

jQuery 1.4同样在jQuery命名空间下添加了新的"contains"函数。这是一个低级的函数,它接受两个DOM节点作为参数。它会返回一个布尔值来表示后面一个元素是否在前面一个元素中存在。如:

jQuery.contains(document.documentElement, document.body);
// 返回true - <body>在<html>存在
5、去掉元素的包装

".warp()”已经在jQuery中有段日子了,现在跟它对应的".unwrap()”方法也被加进到1.4中了。这个方法刚好跟warp()方法相反。假设有下面的DOM结构:

<div>
<p>Foo</p>
</div>
我们可以用下面的函数去掉段落元素的外层:

jQuery('p').unwrap();
最终的DOM结构如下:

<p>Foo</p>
注意,这个方法处理比较简单,它会移掉任何元素的父节点。
function iq_ref = fcn(omega_ref, omega_actual) a=0; b=0; lambda = 0.1; eta = 0.05; Ts = 0.0001; np = 4; % 极对数 psi_f = 0.13333; % 永磁磁链 J_nom = 0.000245; % 标称转动惯量 B_nom = 0.000304; % 标称粘滞摩擦系数 (添加缺失参数) w_speed = 5000; lambda_speed = 3000; persistent omega_buf iq_buf phi_hat F_speed omega_hat s_int if isempty(omega_buf) omega_buf = [omega_actual; omega_actual; omega_actual]; iq_buf = [iq_measured; iq_measured]; phi_hat = 1.0; F_speed = 0; omega_hat = omega_actual; s_int = 0; end Te = 1.5 * np * psi_f * a; e_omega = omega_hat - omega_actual; s_int = s_int + e_omega * Ts; s = e_omega - (B_nom/J_nom) * s_int; sqrt_s = sqrt(abs(s) + 1e-8); sign_s = sign(s); nonlinear_term = sqrt_s .* sign_s + s; F_speed = F_speed - w_speed * Ts * (0.5 * sign_s + 1.5 * sqrt_s .* sign_s + s); omega_hat_dot = (Te/J_nom) - F_speed - lambda_speed * nonlinear_term; omega_hat = omega_hat + omega_hat_dot * Ts; omega_buf = [omega_actual; omega_buf(1:2)]; iq_buf = [a; iq_buf(1)]; if numel(iq_buf) > 1 && abs(iq_buf(2) - iq_buf(1)) > 1e-6 % 计算速度和电流变化量 d_omega = omega_buf(1) - omega_buf(2); d_iq = iq_buf(1) - iq_buf(2); new_phi = d_omega / d_iq; phi_hat = (1 - eta) * phi_hat + eta * new_phi; end ) iq_comp = F_speed * J_nom / (1.5 * np * psi_f); numerator = phi_hat * (omega_ref - omega_actual); denominator = phi_hat^2 + lambda; if abs(denominator) > 1e-6 iq_ref = iq_measured + numerator / denominator + iq_comp; else iq_ref = iq_measured + iq_comp; % 安全处理 end iq_max = 10; iq_ref = min(max(iq_ref, -iq_max), iq_max); end解释代码的原理
最新发布
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值