将变量赋值给jQuery中的包装器集并不能使代码工作
Assigning a variable to a wrapper set in jQuery doesn't make the code work
我正在尝试缓存或将我的选择器$('#img-grp-wrap .img-wrap img:first-child')
分配给变量,因为我在代码中多次使用它,并且我不断重复自己。但由于某种原因,当我将选择值赋给一个变量时,代码不再工作了。请看下面(第一个工作,第二个不工作):
缓存(工作):
http://jsfiddle.net/g5tvZ/缓存(不工作):
http://jsfiddle.net/uMe2p/(代码应该自动滑动图像,并能够使用next/prev按钮进行导航。请忽略顶部额外的var rotate;
。我也非常感谢任何关于代码重构的技巧
This:
var imgFirst = $('#img-grp-wrap .img-wrap img:first-child');
在imgFirst
中留下一组DOM元素(以及jQuery包装)。当你把你的值赋给imgFirst
时,你的imgFirst
将匹配DOM的状态。
然后你改变DOM,所以:first-child
不选择相同的元素,它曾经和你在imgFirst
留下了错误的东西。基本上,DOM变化,但你的imgFirst
不跟踪这些变化。
我想指出您的代码的另一个问题。您需要从这里的rotate
赋值前删除var
,以便您将赋值给跟踪计时器的相同全局变量。var
在它前面,它是一个局部变量,当你反复点击上一个或下一个按钮(这是可能发生的)时,你会得到多个计时器堆叠。所以修改这个:
$('#img-grp-wrap .prev, #img-grp-wrap .next').hover(function() {
clearInterval(rotate);
}, function() {
var rotate = setInterval(function() {
slideShow();
}, 4000);
});
:
$('#img-grp-wrap .prev, #img-grp-wrap .next').hover(function() {
clearInterval(rotate);
}, function() {
rotate = setInterval(function() {
slideShow();
}, 4000);
});
相关文章:
- 用javascript将script元素附加到头部;铬不能工作
- Chrome原生拖放相对容器并不能正确渲染重影
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 我怎样才能让jQuery即使在尚未创建的对象上也能工作
- 引导程序's的javascript在本地工作,但在部署到服务器时不能工作
- JQuery脚本没有'Don’我不能工作两次
- "npm运行构建:css"不能工作,而当我自己运行脚本时是可以的
- 为什么除了html5输入模式属性之外,这个简单的regex在任何地方都能工作
- 包裹的咕哝声并不能让它的兄弟姐妹满意;peerDependencies要求
- ng样式在与的预标记中!重要的是不能工作
- 我如何才能让这个HTML5全屏功能在Firefox中也能工作
- Cordova:尝试添加Android平台时出现EACCES错误.更改 PATH 并不能修复它
- AJAX并不总是工作
- 总是(节点js)并不总是工作
- angularjs 控制器在指令中使用控制器作为不能工作
- 第一次加载我的页面并不能正常工作
- 在.load()上获取图像宽度并不能在除firefox以外的所有浏览器上工作
- Android -深度链接并不是在所有情况下和所有浏览器上都能工作
- 我已经写了一个名为confirm的函数,但它并不能像我想要的那样工作