2013-02-19 86 views
0

我有一些自定义旋转木马逻辑的问题。jQuery从图像里面获取next()或prev()属性alt文本ul li

我需要在我的页面上处理两个事件。当用户按下左键时,我希望选择器成为活动对象的上一个对象。当用户按右侧时,活动项目应该在“活动”项目旁边。

这是HTML

<li><a href='/vaara'><img src="/media/954/150.jpg" alt="blabla"/></a></li> 
<li><a href='/vaara'><img src="/media/954/150.jpg" alt="blabla"/></a></li> 
<li><a href='/vaara'><img src="/media/954/150.jpg" alt="blabla"/></a></li> 

在中间的元件表示 “激活” 的。

这是jQuery的我想出了

var activeitem = $("#carousel_ul li:eq(3) a img", this).attr('alt'); 

,现在我只是想获得上一个()或next()替代文字。像这样的东西

carouselItemLeft.on('click', function() { 
        var connectedInsurace = activeitem.next(); 

回答

1

.next()看着非常下一个兄弟姐妹。您当前的语境是一个形象,你想要的“下一个”形象是一个包裹在一个列表项和锚,所以你需要像:

var next = activeItem.closest("li").next().find("img").attr("alt"); 
+0

感谢这个解释对我有好处! – rickard 2013-02-19 15:05:46

0

你应该命名你的变量来反映它们实际是什么。 activeitem不应该存储到该项目的属性alt,它应该存储实际项目。

我们假设当前活动的li元素有一个名为active的类。然后,代码可以是这样的:

carouselItemLeft.on('click', function() { 
    var $activeitem = $("#carousel_ul li.active"); // the li, not the img 
    var $connectedInsurace = $activeitem.next(); 
    var alttext = activeitem.find('img').attr('alt'); 
1

eq是从零开始因此:eq(3)选择不以您的标记和attr返回undefined存在第三li元素。 next是一个jQuery对象的方法,不是String对象,在你的代码中产生一个ReferenceError

+0

是啊,我知道EQ是从零开始的。这只是一个例子,试图说明我想要做什么。我认为你明白 – rickard 2013-02-19 14:52:27

+0

@ rickard请提供更多代码,其中'carouselItemLeft'已被定义? – undefined 2013-02-19 14:53:59

+0

'var carouselItemLeft = $('#carousel_container .carousel-item-left');' – rickard 2013-02-19 14:58:25

0

你最好实际分配数据 - *标签活动项目而不是使用项目上的索引。

所以:

carouselItemLeft.on('click', function() { 
     var $connectedInsurace = $('[data-active="true"]'); 
     $connectedInsurace.data("active", false); 
     $(this).data("active", true); 

    // Get next item 
    var $next = $connectedInsurace.next(); 
});