jQuery英雄滑块逻辑,而不是(:第一)不适合我

时间:2011-09-22 17:29:51

标签: jquery

我有以下功能:

    $('#btn-homeheroleft').click( function() {
    if ( $('#homehero-btns a.on:not(:first)')) {
        $('#homehero-btns a.on').prev('a').trigger('click');
    } else {
        //$('#homehero-btns a.on').prev('a').trigger('click');
        $('#homehero-btns a').last('a').trigger('click');
    }
    //return false;
});

它可以很好地旋转英雄横幅,直到它到达第一个,它应该返回到最后一个循环,但是它永远不会到达其他地方,并且由于某种原因总是在if上评估为true。

我在控制台中执行了$('#homehero-btns a').last('a').trigger('click'),它在那里工作得很好。

更新

如果有人有兴趣,这是我的问题的解决方案,谢谢大家的帮助。

    $('#btn-homeheroleft').click( function(e) {
    if ( $('#homehero-btns a:first').hasClass('on') ) {
        $('#homehero-btns a:last').trigger('click');
    } else {
        $('#homehero-btns a.on').prev('a').trigger('click');
    }
    e.preventDefault();
});
    $('#btn-homeheroright').click( function(e) {
    if ($('#homehero-btns a:last').hasClass('on')) {
        $('#homehero-btns a:first').trigger('click');
    } else {
        $('#homehero-btns a.on').next('a').trigger('click');
    }
    e.preventDefault();
});
}

2 个答案:

答案 0 :(得分:1)

当您询问英雄滑块逻辑时,我将解决结构和方法部分,忽略您当前的代码(可能会起作用,但可能会更好。)

对于这种情况,旋转必须无限制。你可以使用一个非常简单的技巧。每次将它旋转到下一个图像(或幻灯片,无论内容是什么)..你想将最后一个图像移到前面,反之亦然。

我曾经在这里做了一个非常简单的滑块旋转器来解决一些问题。这是一个非常好的例子,说明使旋转器动态变得多么容易:http://jsfiddle.net/PmXr2/1/您可以随意使用该代码。

enter image description here

答案 1 :(得分:1)

尝试将.length添加到选择器

$('#btn-homeheroleft').click( function() {
    if ( $('#homehero-btns a.on:not(:first)').length) {
        $('#homehero-btns a.on').prev('a').trigger('click');
    } else {
        //$('#homehero-btns a.on').prev('a').trigger('click');
        $('#homehero-btns a').last('a').trigger('click');
    }
    //return false;
});