Jquery each():回调中的变量总是最后一个值
Jquery each(): variable in callback always has last value?
我似乎不明白这是怎么回事。
<div id="navigation">
<ul id="navList">
<li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX.html">Discover</a></li>
<li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX/documentation.html">Documentation</a></li>
<li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX/download.html">Download</a></li>
<li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX/donate.html">Donate</a></li>
</ul>
<script type="text/javascript">
$('.navItem').each(function() {
$link = $(this).children('a');
$link.hover(
function() {
$link.css('width', '224px');
},
function() {
$link.css('width', '192px');
}
)
});
</script>
</div>
http://jsfiddle.net/Sth3Z/它应该对每个链接都这样做,而不是只改变最后一个链接,无论哪个链接被悬停在上面
在$link
之前添加var
: http://jsfiddle.net/Sth3Z/1/
$('.navItem').each(function() {
var $link = $(this).children('a'); // `var` added
当前,您正在声明一个全局变量,它将在循环中的每次迭代中被覆盖。
为什么不
$('.navItem > a').hover(
function() {
$(this).css('width', '224px');
},
function() {
$(this).css('width', '192px');
}
);
?
http://jsfiddle.net/Sth3Z/2/有一种更好的方式来表达你想要做的事情:
$(".navItem a").hover(
function() {
$(this).css('width', '224px');
},
function() {
$(this).css('width', '192px');
}
);
相关文章:
- 表追加而不附加最后一个元素
- 无法在Ionic select中预先选择最后一个选项
- 为什么画布形状只在3个画布中的最后一个画布上渲染
- Jquery append oly获取循环Rails中的最后一个elemen
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 多维关联数组的最后一个索引
- 将会话变量从一个页面传递到另一个页面
- 如何替换字符串中最后一个出现的变量
- 表读取最后一个变量
- Javascript for loop 作用域采用最后一个变量
- 从本地存储中获取最后一个变量(按时间)
- 当 DOM 更改时,使用最后一个选择器更新变量
- JS将对象推送到变量,将最后一个对象添加到所有元素中
- Jquery each():回调中的变量总是最后一个值
- Javascript变量修改后的最后一个值
- 如何从JavaScript变量中删除第一个和最后一个双引号
- 数组中.在for循环javascript中只推入最后一个变量
- 全局变量只返回循环中最后一个实例的值
- 变量设置为Javascript for循环中的最后一个值