我是jQuery的新手,我只是在做婴儿用品。目前我正在开发一个自定义滑块,在“li”元素中有5个“div”标签。
HTML
<li class="slider">
<div class="first inactive text-center">
<img src="img/wilson-logo.jpg" alt="wilson logo"/>
</div>
<div class="second active text-center">
<img src="img/head-logo.jpg" alt="head logo"/>
</div>
<div class="third inactive text-center">
<img src="img/prince-logo.jpg" alt="prince logo"/>
</div>
<div class="second active text-center hide">
<img src="img/head-logo.jpg" alt="head logo"/>
</div>
<div class="third inactive text-center hide">
<img src="img/prince-logo.jpg" alt="prince logo"/>
</div>
</li>
的jQuery
$("#slider").ready(function (){
var slides = $("#slider").children();
$("#backwards").click(function(){
alert(slides.length);
});
});
我的jQuery警报读取(0)...我期待5,我最终想要完成的是将所有“div”元素放入一个名为“幻灯片”的数组中,然后我希望两个显示三个。但是对于没有,有人可以向我解释为什么它读取0而不是5.谢谢
完成幻灯片的任何建议? 我已完成滑块,您可以在此处查看示例:页面底部的http://www.iamcavic.com/simon(朋友和合作伙伴)徽标滑块..
我已经学会了一些新的东西,比如像孩子一样通过子元素('div')和.each()循环所有元素,我也学会了.html()来检索元素的内容。
这是我的 jQuery
$(".slider").ready(function (){
var images = [], i = 1;
// Initial loop to get all <img> elements out of child <div> tags
$(".slider").children('div').each(function() {
images[i] = $(this).html();
i++;
});
// Initialize controls and positions of windows 1,2,3
var position_one = 1, position_two = 2, position_three = 3, num_images = images.length;
// Go backwards control
$("#backwards").click(function(){
// Check positions for and reset
if (position_one === 1) {
position_one = num_images;
}else if (position_two === 1){
position_two = num_images;
}else if (position_three === 1){
position_three = num_images;};
// Move position back - 1 on all windows
position_one--;
position_two--;
position_three--;
$("#one").html(images[position_one]);
$("#two").html(images[position_two]);
$("#three").html(images[position_three]);
});
// Go forward control
$("#forwards").click(function(){
// Check positions for and reset
if(position_one === (num_images - 1 )){
position_one = 0;
}else if(position_two === (num_images - 1 )){
position_two = 0;
}else if(position_three === (num_images - 1 )){
position_three = 0;
}
// Move positions forward + 1 on all windows
position_one++;
position_two++;
position_three++;
$("#one").html(images[position_one]);
$("#two").html(images[position_two]);
$("#three").html(images[position_three]);
});
});
我想知道你会建议什么,我确信有更好的方法可以做到这一点。我对未来项目的任何建议和建议持开放态度。
再次感谢你!
答案 0 :(得分:4)
应为$('.slider')
。类不是ID。
ID选择器= '#name'
类选择器= '.name'.
答案 1 :(得分:1)
您应该使用ready()
对象上的document
函数。
这就是你想要的:
$(document).ready(function() {
var slides = $("li.slider").children();
$("#backwards").click(function(){
alert(slides.length);
});
});
答案 2 :(得分:1)
#
引用了一个id,但是在你的li元素上,slider是一个类,所以你应该使用.
引用一个类。
答案 3 :(得分:0)
您已使用类.slider
定义主div,但在jQuery中,您使用的是ID #slider
...
这是你的javascript修复:
$(".slider").ready(function (){
var slides = $("#slider").children();
$("#backwards").click(function(){
alert(slides.length);
});
});
在这种情况下你也可以使用$(document).ready(...)
,并且当页面准备就绪时将执行代码部分(这就是你想要的原因)